Linux的shell脚本:如何用bash脚本从mysql数据库中直接读取用户数据,并直接显示出来(一条命令查看数据库信息)

目录

一、要求

二、脚本和解释

三、脚本执行

1、 脚本保存为sh文件

2、给脚本赋予执行权限

3、运行脚本

四、Bash脚本中,可以使用哪些MySQL语句

1、连接到MySQL数据库  

2、执行SQL语句  

3、查询并显示结果  

4、脚本中执行SQL文件  

5、数据库操作  

6、表操作  

7、数据插入  

8、数据更新  

9、数据删除  

10、. 用户和权限管理

五、注意事项


一、要求

        在进行视频监控平台的录像点播功能测试的时候,发现用户数据增加到接近1万条的时候,会出现一些问题。这个时候,经常需要查看用户表,了解用户表的变化情况,每次需要手工进入mysql命令行,非常麻烦。有没有办法,一个命令就可以查看用户相关数据呢?

        使用linux的bash脚本是一个比较便捷的方法。如何用bash脚本从mysql数据库中读取用户数据并直接显示出来?

二、脚本和解释

        直接把脚本列出来,如下:

#!/bin/bash # 如下为MySQL数据库连接信息 ,可以替换为实际的连接信息
DB_HOST="localhost" 
DB_USER="avs_username" 
DB_PASS="avs_password" 
DB_NAME="avs_database_name" 
TABLE_NAME="avs_table_name"  # 使用mysql命令行工具从表中读取数据 
mysql -h$DB_HOST -u$DB_USER -p$DB_PASS $DB_NAME -e "SELECT * FROM $TABLE_NAME;"## 实际使用时,需要将avs_username、avs_password、avs_database_name和avs_table_name替换为您的实际MySQL连接信息。

三、脚本执行

1、 脚本保存为sh文件

        使用vim工具,编辑read_mysql_user.sh文件,如下:

                vim read_mysql_user.sh

        编辑完成后,保存、退出。

2、给脚本赋予执行权限

        使用chmod命令给脚本执行权限,使用如下命令:

                chmod +x read_mysql_user.sh

        执行结果如下:

3、运行脚本

        现在你可以运行脚本并查看从MySQL表中检索到的数据:

[root@ecs-52a1 home]#
[root@ecs-52a1 home]# sh read_mysql_user.sh
mysql: [Warning] Using a password on the command line interface can be insecure.
+----------------------------------+-------------------------------------+------------+--------+-----------+---------------------+
| id                               | realname                            | username   | RoleId | create_by | create_time         |
+----------------------------------+-------------------------------------+------------+--------+-----------+---------------------+
| 1793647071589376001              | 杨A                                 | newtest    | 4      | admin     | 2024-05-23 22:16:01 |
| 1793809237772673025              | 河北OH信息技术-M老师                 | hbouhaojs  | 6      | admin     | 2024-05-24 09:00:24 |
| 1793809332010295298              | 肖总                                | xiao_guest | 7      | admin     | 2024-05-24 09:00:47 |
| 1793809416349360130              | webtest                             | webtest    | 5      | admin     | 2024-05-24 09:01:07 |
| 1795286877142589442              | Z超                                 | zongchao   | 5      | admin     | 2024-05-28 10:52:01 |
| e9ca23d68d884d4ebb19d07889727dae | 管理员                              | admin      | NULL   | NULL      | 2038-06-21 17:54:10 |
+----------------------------------+-------------------------------------+------------+--------+-----------+---------------------+
[root@ecs-52a1 home]#
[root@ecs-52a1 home]#

四、Bash脚本中,可以使用哪些MySQL语句

        在Linux的Bash脚本中,可以使用MySQL的命令行接口(CLI)提供的所有功能。这意味着可以执行几乎所有的MySQL操作,包括数据库管理、数据查询、数据修改、权限管理等。以下是bash脚本中可以使用的MySQL语句的例子:

1、连接到MySQL数据库  

   mysql -u username -p  

   这段代码可以在脚本中用来提示用户输入密码后连接到MySQL数据库。

2、执行SQL语句  

   mysql -u username -p -e "YOUR_SQL_COMMAND"  

   -e 选项允许你直接在命令行中执行SQL命令。

3、查询并显示结果  

   mysql -u username -p -e "SELECT * FROM your_table" | less  

   使用管道将查询结果传递给 less 命令行文本查看器。

4、脚本中执行SQL文件  

   mysql -u username -p < your_sql_file.sql  

   将SQL文件的内容作为命令传递给MySQL。

5、数据库操作  

   mysql -u username -p -e "CREATE DATABASE your_database"

   mysql -u username -p -e "DROP DATABASE your_database"  

   创建或删除数据库。

6、表操作  

   mysql -u username -p -e "CREATE TABLE your_table (...)""

   mysql -u username -p -e "DROP TABLE your_table"  

   创建或删除表。

7、数据插入  

   mysql -u username -p -e "INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2')"  

   向表中插入数据。

8、数据更新  

   mysql -u username -p -e "UPDATE your_table SET column1='value1' WHERE condition"  

   更新表中的数据。

9、数据删除  

   mysql -u username -p -e "DELETE FROM your_table WHERE condition"  

   删除表中的数据。

10、. 用户和权限管理

        mysql -u username -p -e "GRANT ALL PRIVILEGES ON your_database.* TO 'user'@'localhost' IDENTIFIED BY 'password'"

        mysql -u username -p -e "REVOKE ALL PRIVILEGES ON your_database.* FROM 'user'@'localhost'"

        管理数据库用户和权限。

五、注意事项

        直接在脚本中硬编码数据库密码可能不是最佳做法,因为它可能导致安全风险。可以考虑使用其他方法(如环境变量、配置文件等)来管理敏感信息。在实际使用中,需要调整命令来避免在命令行中显示密码。

        在编写Bash脚本时,请确保处理用户输入和数据库操作时要小心,以避免SQL注入攻击和其他安全问题。最好使用参数化查询或者预编译语句来提高安全性。此外,对于生产环境中的数据库操作,建议使用专业的数据库管理工具或者API,而不是直接通过命令行进行操作。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/846635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

conda源不能用了的问题

conda旧没用了&#xff0c;不知道什么原因&#xff0c;安装源出问题&#xff0c;报如下错&#xff1a; Loading channels: failedUnavailableInvalidChannel: HTTP 404 NOT FOUND for channel anaconda/pkgs/main <https://mirrors.aliyun.com/anaconda/pkgs/main>The c…

Vue.js 动态组件与异步组件

title: Vue.js 动态组件与异步组件 date: 2024/6/2 下午9:08:50 updated: 2024/6/2 下午9:08:50 categories: 前端开发 tags:Vue概览动态组件异步加载性能提升路由管理状态控制工具生态 第1章 Vue.js 简介 1.1 Vue.js 概述 Vue.js 是一个渐进式的JavaScript框架&#xff0c;…

6.2数据库作业

文章目录 11.11.21.3 22.12.2 33.13.23.3 4 1 1.1 丢失更新(lost update)异常是指如果事务Tj读取了一个数据项&#xff0c;然后另一个事务Ti写该数据项(可能基于先前的读取)&#xff0c;然后Tj写该数据项。于是Ti做的更新丢失了&#xff0c;因为Tj的更新覆盖了Ti写入的值。 给…

JAVA基础(4) 面向对象编程1

目录 一、面向对象编程概述 1.面向对象的程序设计思想 二、JAVA语言的基本元素&#xff1a;类和对象 1.类为何物&#xff1f; 2.对象为何物&#xff1f; 3.类的成员 4.如何完成面向对象&#xff1f; 三、类的成员——变量 1.如何声明变量 2.成员变量与局部变量 四、…

大模型时代的向量数据库

向量数据库专门用于存储和处理向量数据。它的能够高效地存储和检索向量数据&#xff0c;使开发者能够进行高级的相似性搜索和分析。 在大模型时代&#xff0c;文本、图像、音频和其他非结构化数据&#xff0c;通常被嵌入到一定维度的向量空间&#xff0c;使用向量数据库能够高效…

《论文阅读》通过顺序不敏感的表示正则化实现稳健的个性化对话生成 ACL 2023

《论文阅读》通过顺序不敏感的表示正则化实现稳健的个性化对话生成 ACL 2023 前言 相关个性化生成论文推荐简介问题定义方法损失函数实验结果 前言 亲身阅读感受分享&#xff0c;细节画图解释&#xff0c;再也不用担心看不懂论文啦~ 无抄袭&#xff0c;无复制&#xff0c;纯手…

中间件模版引擎

文章目录 中间件1.自定义中间件1&#xff09;全局2&#xff09;局部中间件 2.内置中间件(静态资源目录&#xff09; Art-template1.模板语法1&#xff09;输出2&#xff09;原文输出3&#xff09;条件判断4&#xff09;循环5&#xff09;子模版6&#xff09;模版继承7&#xff…

vue-Dialog 自定义title样式

展示结果 vue代码 <el-dialog :title"title" :visible.sync"classifyOpen" width"500px" :showClose"false" class"aboutDialog"> <el-form :model"classifyForm" :rules"classifyRules">…

【OJ】C++ | 二叉树进阶 · 合集(2)

摘要&#xff1a;根据二叉树创建字符串、二叉树的最近公共祖先、二叉树的层序遍历 前言&#xff1a;承接上文&#xff0c;本文继续提供二叉树进阶有关题目的解法。如有错误&#xff0c;烦请指正。 目录 1. 根据二叉树创建字符串 题解及代码 2. 二叉树的最近公共祖先 题解及…

Java | Leetcode Java题解之第121题买卖股票的最佳时机

题目&#xff1a; 题解&#xff1a; public class Solution {public int maxProfit(int prices[]) {int minprice Integer.MAX_VALUE;int maxprofit 0;for (int i 0; i < prices.length; i) {if (prices[i] < minprice) {minprice prices[i];} else if (prices[i] -…

用幻灯片讲解C++中的C语言风格数组

用幻灯片讲解C中的C语言风格数组 1.栈内存中的C风格数组 糟糕的可用性&#xff0c;但你将在遗留代码中看到它们。相同类型的对象块。大小必须是常量表达式。第一个元素的索引为0&#xff0c;即数组索引从0开始。 注意一下数组的初始化&#xff0c;使用了C11标准之后的统一初始…

【2024年5月备考新增】】 考前篇(26)《必备资料(9) - 论文串讲-范围管理》

过程定义输入工具技术输出实际应用规划范 围管理编制范围管理计划: 书面描述将如何定 义、制定确认项目 范围的过程,其主 要作用是在整个项 目中对如何管理范 围提供指南和方向1、项目章程2、项目管理计划.质量管理计划 3、事业环境因素 .项目生命周期描4、组织过程资产 述.开…

react ant design Upload 多文件上传 beforeUpload 会调用很多次,怎么只获取一次

当使用Ant Design的Upload组件实现多文件上传时&#xff0c;beforeUploadHandler函数会被每个选中的文件调用一次。如果您只想获取一次选中的文件而不是每个文件都触发一次处理逻辑&#xff0c;可以采取以下方法&#xff1a; 使用 useRef 钩子保存文件列表&#xff1a;可以使用…

Nginx监控与告警:确保服务稳定运行

在今天的网络世界中&#xff0c;Nginx已经成为许多网站和应用程序的首选反向代理和Web服务器。然而&#xff0c;随着流量的增长和复杂性的增加&#xff0c;确保Nginx服务的稳定运行变得至关重要。本文将探讨如何有效地监控Nginx&#xff0c;并设置告警机制&#xff0c;以便在潜…

cefpython3打包windows应用

序 最近使用cefpython3开发程序&#xff0c;网上找了一圈打包工具都没有效果&#xff0c;最后在github中翻到使用cx_Freeze进行打包。 代码 from distutils.sysconfig import get_python_lib from os.path import join from glob import glob from cx_Freeze import setup, …

数学建模--特殊的图

目录 1.二部图 &#xff08;1&#xff09;简单认识 &#xff08;2&#xff09;定义 &#xff08;3&#xff09;判定定理 &#xff08;4&#xff09;定理理解 2.匹配问题 &#xff08;1&#xff09;匹配 &#xff08;2&#xff09;完备&&完美匹配 &#xff08;3…

JTS库的讲解及使用

JTS&#xff08;Java Topology Suite&#xff09;是一套用于创建、操作和分析二维几何对象的Java库。JTS提供了丰富的几何操作和分析功能&#xff0c;是GIS&#xff08;地理信息系统&#xff09;应用中的重要工具。以下是JTS库的一些主要功能及其详细使用示例&#xff1a; 1. …

【Python】使用 Pandas 进行均值填充:处理缺失数据的实用指南

缘分让我们相遇乱世以外 命运却要我们危难中相爱 也许未来遥远在光年之外 我愿守候未知里为你等待 我没想到为了你我能疯狂到 山崩海啸没有你根本不想逃 我的大脑为了你已经疯狂到 脉搏心跳没有你根本不重要 &#x1f3b5; 邓紫棋《光年之外》 在数据分析…

Python 入门教程详细版全集(两周速成)

一、初始Python 打开CMD&#xff08;命令提示符&#xff09;程序&#xff0c;输入Python并回车。然后&#xff0c;在里面输入代码回车即可立即执行。 Tip1:找不到“命令提示符”程序在哪里&#xff1f; 使用快捷键&#xff1a;win r;打开运行框&#xff0c;输入cmd后回车即可…

点点点还有没有做下去的必要

大家好&#xff0c;我是洋子&#xff0c;最近工作特别忙&#xff0c;好久没更文章了 因为组织架构调整&#xff0c;原先的组长调离我所在已经3年多的业务线&#xff0c;我就承担起组长的角色了&#xff0c;除了日常跟进需求测试&#xff0c;还跟RD、跨业务线负责人开会&#x…