通过Shell脚本批量创建服务器上的MySQL数据库账号

1.项目背景

因监控需要,我们需要在既有的每个MySQL实例上创建一个账号。公司有数百台 MySQL 实例,如果手动登入来创建账号很麻烦,也不现实。所以,我们写了一个简单的shell脚本,用来创建批量服务器的mysql 账号。

 2.执行脚本内容;

#!/bin/bash
## 此段shell 脚本的主要功能是实现在多个SQL Server IP实例上,创建账号。输入参数是两个,第一个是数据库所在的IPs,即多个Server IP构成的字符串,IP间用逗号隔开。第二个参数是 端口(3306 或 3307)
##MySQL程序所在路径--mysql bin 文件所在路径;如果由建立软连接,可直接是mysql
command_linebin="/data/mysql5720/bin/mysql"
##用来连接MySQ的账号和密码
username="DBA_MYSQLACC"
password="DBAACCTEST109211706DF"
## 新创建的账号和密码
createuid="testuid"
createpwd="testpwd"
##指定新创建的用户在那个主机上可以登录,如果是本地用户可用localhost;如果指定规则的可以使用通配符%
phost="177.177.%"
mysqlserverIPs=$1
echo $mysqlserverIPs
## 按“,”分割,将字符串转换为数组。
IParr=(${mysqlserverIPs//,/ })
echo $IParr
for ((i=0;i<${#IParr[@]};i++))
do
  IP=${IParr[$i]}
  echo "${IP}"
select_sql="select * from user where user=\"$createuid\""
msg=$(${command_linebin} -h ${IP} -P $2 -u$username -p$password -s mysql -e "${select_sql}")
echo $msg
##创建账号前,先检查需要创建的账号是否已经存在,如果已经存在了,则直接退出。
if [[ $msg = "" ]] ;then
  echo $(date -d today +"%Y%m%d%H%M%S") $mip "The Condition is OK,permit to create UID."
else
  echo $(date -d today +"%Y%m%d%H%M%S") $IP "The UID you want create has been exited, please check it! The Act Quit!"
  exit
 fi
## 以下几行代码是创建的关键
${command_linebin} -h ${IP} -P $2 -u$username -p$password -s mysql <<EOF
CREATE USER '$createuid'@'$phost' IDENTIFIED BY '$createpwd';
GRANT Select,PROCESS ON *.* TO '$createuid'@'$phost';
flush privileges;
EOF
##创建后,再次检查账号看否已将存在。如果不存在,则说明创建失败,直接退出。
select_sql="select * from user where user=\"$createuid\""
msg=$(${command_linebin} -h ${IP} -P $2 -u$username -p$password -s mysql -e "${select_sql}")
echo $msg
if [[ $msg = "" ]] ;then
  echo $(date -d today +"%Y%m%d%H%M%S") ${IP} "The action to create UID Error,Please Check it! The Act Quit! "
  exit
else
  echo $(date -d today +"%Y%m%d%H%M%S") ${IP} "Congratulation! Create UID successful"
 fi
done

3. 执行举例

Step 1 将代码放置到执行文件中,可执行文件命名为 mysql_CreateUIDMulti.sh

Step 2 请对此文件授予可执行权限,否则,提示以下错误。

Step 3 执行的具体命令(参数格式),例如 在 177.177.XXX.128,177.177.XXX.144 两个 3306的实例上创建账号

./mysql_CreateUIDMulti.sh 177.177.XXX.128,177.177.XXX.144 3306

Step 4 打印的执行结果如下

177.177.XXX.128,177.177.XXX.144
177.177.XXX.128
177.177.XXX.128
mysql: [Warning] Using a password on the command line interface can be insecure.
20180529171802 The Condition is OK,permit to create UID.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
177.177.% testuid Y N N N N N N N Y N N N N N N N N N N N N N N N N N N N N 0 0 0 0 mysql_native_password *22CBF14EBDE8814586FF12332FA2B6023A7603BB N 2018-05-29 17:18:02 NULL N
20180529171802 177.177.XXX.128 Congratulation! Create UID successful
177.177.XXX.144
mysql: [Warning] Using a password on the command line interface can be insecure.
177.177.% testuid Y N N N N N N N Y N N N N N N N N N N N N N N N N N N N N 0 0 0 0 mysql_native_password *22CBF14EBDE8814586FF12332FA2B6023A7603BB N 2018-05-30 00:56:38 NULL N
20180529171802 177.177.XXX.144 The UID you want create has been exited, please check it! The Act Quit!

4.补充说明

如果创建一个服务器上的MySQL账号,可按照以下格式

./mysql_CreateUIDMulti.sh 177.177.XXX.128 3306

打印的Log 如下

177.177.XXX.128
177.177.XXX.128
177.177.XXX.128
mysql: [Warning] Using a password on the command line interface can be insecure.
20180529173517 The Condition is OK,permit to create UID.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
177.177.% testuid Y N N N N N N N Y N N N N N N N N N N N N N N N N N N N N 0 0 0 0 mysql_native_password *22CBF14EBDE8814586FF12332FA2B6023A7603BB N 2018-07-29 17:35:17 NULL N
20180529173517 177.177.XXX.128 Congratulation! Create UID successful

总结

以上所述是小编给大家介绍的通过Shell脚本批量创建服务器上的MySQL数据库账号 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

(0)

相关推荐

  • Linux下mysql新建账号及权限设置方法

    1.权限赋予 说明:mysql部署在服务器A上,内网上主机B通过客户端工具连接服务器A以进行数据库操作,需要服务器A赋予主机B操作mysql的权限 1.1 在服务器A上进入mysql,假设在服务器A上mysql的账户是root: 复制代码 代码如下: mysql - u root -p 然后回车键入密码! 1.2 赋予主机B操作数据库的权限 复制代码 代码如下: mysql> grant usage on *.* to username@192.168.0.1 identified by 'pa

  • MySQL如何修改账号的IP限制条件详解

    前言 最近在工作中遇到一个需求:修改MySQL用户的权限,需要限制特定IP地址才能访问,第一次遇到这类需求,结果在测试过程,使用更新系统权限报发现出现了一些问题, 具体演示如下. 注意:下面测试环境为MySQL 5.6.20. 如有其它版本与下面测试结果有出入,请以实际环境为准. 我们先创建一个测试用户LimitIP,只允许192.168段的IP地址访问,具体权限如下所示: mysql> GRANT SELECT ON MyDB.* TO LimitIP@'192.168.%' IDENTIFI

  • MySQL修改root账号密码的方法

    MySQL数据库中如何修改root用户的密码呢?下面总结了修改root用户密码的一些方法 1: 使用set password语句修改 mysql> select user(); +----------------+ | user() | +----------------+ | root@localhost | +----------------+ 1 row in set (0.08 sec) mysql> set password=password('123456'); Query OK,

  • 通过Shell脚本批量创建服务器上的MySQL数据库账号

    1.项目背景 因监控需要,我们需要在既有的每个MySQL实例上创建一个账号.公司有数百台 MySQL 实例,如果手动登入来创建账号很麻烦,也不现实.所以,我们写了一个简单的shell脚本,用来创建批量服务器的mysql 账号.  2.执行脚本内容; #!/bin/bash ## 此段shell 脚本的主要功能是实现在多个SQL Server IP实例上,创建账号.输入参数是两个,第一个是数据库所在的IPs,即多个Server IP构成的字符串,IP间用逗号隔开.第二个参数是 端口(3306 或

  • 如何使用Shell脚本掩盖Linux服务器上的操作痕迹(推荐)

    使用Shell脚本在Linux服务器上能够控制.毁坏或者获取任何东西,通过一些巧妙的攻击方法黑客可能会获取巨大的价值,但大多数攻击也留下踪迹.当然,这些踪迹也可通过Shell脚本等方法来隐藏. 寻找攻击证据就从攻击者留下的这些痕迹开始,如文件的修改日期.每一个 Linux 文件系统中的每个文件都保存着修改日期.系统管理员发现文件的最近修改时间,便提示他们系统受到攻击,采取行动锁定系统.然而幸运的是,修改时间不是绝对可靠的记录,修改时间本身可以被欺骗或修改,通过编写 Shell 脚本,攻击者可将备

  • shell脚本批量创建用户的方法小结

    目录 shell脚本批量创建用户基本操作 附:用shell脚本批量创建50个用户并设置密码,批量删除用户 总结 shell脚本批量创建用户基本操作 案例:批量创建user01 ~ user20 一共二十个文件,密码为随机的六位数  并且将 用户名和密码 输出到 user.txt 文件中 #!/bin/bash #批量创建20个用户 user01 ~ user20 user=user #创建存储用户和密码的文件 touch user.txt txt=user.txt #循环遍历1到20 for i

  • shell脚本连接、读写、操作mysql数据库实例

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为xml或html文件, 并分析了核心语句.本文介绍的方法适用于PostgreSQL ,相对mysql而言,shell 中读写PostgreSQL会更简单些. 1. 连接mysql 数据库 shell中连接数据库的方法很简单,只需要指定用户名,密码,连接的数据库名称,然后通过重定向,输入mysql的语

  • shell脚本批量复制及执行命令的示例详解

    平时在处理一个或几个机器运行环境时,一个机器一个机器处理也能接受,但是如果是一批机器,几十或几百台,要是一台一台去安装环境,光是输入同一的命令,估计你自己都想吐,所有聪明的人会想一些偷懒的办法,确实可以找到一些省时省力的方法,比如写一个批量处理shell脚本,这几天在处理一批(八九十台)机器环境,找了一些批量处理的脚本,包括批量传输(scp)文件到多台机器上.批量执行命令到多台机器.还有需要交互的命令,下面记录一些这些命令: 机器IP文件:ip.txt 192.168.10.201 192.16

  • Jar包一键重启的Shell脚本及新服务器部署的一些经验分享

    前言 最近公司为客户重新部署了一套新环境,由我来完成了基础环境的配置,配置过程中总结了一些经验,分享给各位园友 使用 curl 命令检查网络 拿到新服务器后,首先检查服务器网络是否通畅.我们常用的 ping 命令使用的是 ICMP 协议,大部分服务器都设置了域名出入站规则,即使某些地址可以 ping 通,也存在服务器无法访问的情况.这时可以使用 curl host:port 命令来测试该服务器能否正常发送 http 请求到外部服务器 安装 JDK 新服务器一般没有 JDK ,可以使用 java

  • shell脚本批量将文件复制到指定的文件夹下

    由于线上文件比较多,选择特定的文件拿下线下进行语料标注,如果指定的文件数量太多,一个个复制就很麻烦.所以写一个shell脚本进行批量操作. 首先把需要下载的文件路径写入txt文件中,如果需要路径补全,则在每条路径上加上*号,这样就很简单cd到对应的目录下,(就这个小点,花费了我很久时间) 如图所示: 然后就是遍历txt文件进行路径下操作, cat 2022-05-07_path.txt | while read line do #echo $line dir=根目录/"$line" e

  • shell脚本 自动创建用户详解及实例代码

    shell脚本 自动创建用户详解 需求:判断用户zhangsan是否存在,不存在就创建并设置密码为123456 1.vi createuser.sh 2.写入: USER_COUNT=`cat /etc/passwd | grep '^zhangsan:' -c` USER_NAME='zhangsan' if [ $USER_COUNT -ne 1 ] then useradd $USER_NAME echo "123456" | passwd $USER_NAME --stdin

  • shell脚本将Oracle服务器中数据定时增量刷新到ftp服务器中

    现有需求:将oracle数据库中的数据准实时同步至某ftp服务器中,以便前端应用能定时从ftp服务器目录中取增量数据 方法:将加工脚本写为存储过程,然后利用shell脚本执行该存储过程并将增量数据导出为txt文件并传送到ftp服务器,利用crontab定时每5分钟执行一次shell脚本,从而实现oracle库中数据持续增量刷新到ftp服务器 其中crontab以及ftp和存储过程的编写并没有难度,shell脚本的功能稍稍复杂,现在将脚本记录下以备后查 总结 以上所述是小编给大家介绍的shell脚

  • 使用Shell脚本批量启停Docker服务

    最近日常测试中经常需要手动启动或停止docker,于是决定写一个Shell脚本来代替人工操作,另外该脚本,也可以通过Python脚本实行远程调用,详细如下所示: 目前该脚本是将Container ID写死在脚本中,当然也可以通过传参给脚本来进行控制,大家可以改造一下. 启动docker 启动脚本详细如下所示: #!/bin/bash containerIDs="ad3e4d7fc407 a228730a915f ad3e4d7fc4099" statusLived="live

随机推荐