1.项目背景

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

2.执行脚本内容;

#!/bin/bash
## 此段shell 脚本的主要功能是实现在多个SQL Server IP实例上,创建账号。输入参数是两个,第一个是数据库所在的IPs,即多个Server IP构成的字符串,IP间用逗号隔开。第二个参数是 端口( 或 )
##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=$
echo $mysqlserverIPs
## 按“,”分割,将字符串转换为数组。
IParr=(${mysqlserverIPs//,/ })
echo $IParr for ((i=;i<${#IParr[@]};i++))
do
IP=${IParr[$i]}
echo "${IP}"
select_sql="select * from user where user=\"$createuid\""
msg=$(${command_linebin} -h ${IP} -P $ -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 $ -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 $ -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.,177.177.XXX. 

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. 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 mysql_native_password *22CBF14EBDE8814586FF12332FA2B6023A7603BB N -- :: NULL N
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 mysql_native_password *22CBF14EBDE8814586FF12332FA2B6023A7603BB N -- :: NULL N
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. 

打印的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. 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 mysql_native_password *22CBF14EBDE8814586FF12332FA2B6023A7603BB N -- :: NULL N
177.177.XXX.128 Congratulation! Create UID successful

本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!

本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!

本文版权归作者所有,未经作者同意不得转载,谢谢配合!!!

通过Shell脚本来创建批量服务器上的MySQL数据库账号的更多相关文章

  1. jdbc连接阿里云服务器上的MySQL数据库 及 数据库IP限制

    问题1:Jdbc 如何连接阿里云服务器上的MySQL数据库? 解决: 上截图: 其中IP是阿里云服务器的公网IP地址. 问题2:   刚开始接手开发的时候,使用Navicat连接阿里云服务器上的数据后 ...

  2. 使用Navicat连接阿里云服务器上的MySQL数据库=======Linux 开放 /etc/hosts.allow

    使用Navicat连接阿里云服务器上的MySQL数据库   1.首先打开Navicat,文件>新建连接> 2,两张连接方法 1>常规中输入数据库的主机名,端口,用户名,密码 这种直接 ...

  3. 使用Navicat远程连接阿里云ECS服务器上的MySQL数据库

    一.必须给服务器的安全组规则设置端口放行规则,在管理控制台中设置: 之后填写配置,授权对象是授权的IP,其中0.0.0.0/0为所有IP授权,之后保存; 二.Navicat使用的配置 在编辑连接处,要 ...

  4. 使用Navicat连接阿里云服务器上的MySQL数据库--转

    手把手教你如何正确连接阿里云服务器上的数据库: 1.首先打开Navicat,文件>新建连接>MySQL连接,其他的如一图所示. 2.因为是连接服务器上的MySQL,所以我们使用SSH连接, ...

  5. linux 操作之一 如何在linux将本地数据*.sql文件导入到linux 云服务器上的mysql数据库

    liunx 版本ubuntu 16.4 mysql 版本  5.6 1)准备*.sql文件 (* 是准备导入的sql文件的名字) 2)liunx 远程客户端  SecureCRT 7.0 alt+p ...

  6. [运维] 如何在云服务器上安装 MySQL 数据库, 并使用 Navicat 实现远程连接管理

    .•●•✿.。.:*.•●•✿.。.:*.•●•✿.。.:*.•●•✿.。.:*.•●•✿.。.:*.•●•✿.。.:*.•.•●•✿.。.:*.•●•✿.。.:*.•●•✿.。.:*.•●•✿.。. ...

  7. 把本地windows系统上的mysql数据库移到linux系统服务器上,mysql数据库拒绝访问

    Mysql连接报错 原因是:远程服务器不允许你的其他程序访问它的数据库.所以,我们要对远程服务器进行设置,使它允许你进行连接. 步骤:一.进入mysql客户端,输入:use mysql; 二.输入:s ...

  8. 用Navicat连接阿里云ECS服务器上的MySQL数据库

    今天用navtive连接阿里云服务器(Linux)的数据库时,老是连接不上,并且报10060错误,要通过以下两个步骤解决: 1.先进入linux连接数据库并输入密码: mysql -uroot -p ...

  9. (转发)Navicat 远程连接 Linux服务器上的MySQL数据库

    授权法: 在安装mysql的机器上运行: 1.# ./bin/mysql -uroot -p //这样应该可以进入MySQL服务器 2.mysql> GRANT ALL PRIVILEGES O ...

随机推荐

  1. VS2019 开发Django(六)------Admin中图片上传

    导航:VS2019开发Django系列 该篇继续完善在Django的管理界面上传图片,因为LazyOrders小程序中菜单需要展示图片,而不是一个文本路径,所以我们还需要继续改造一下. 1)安装pil ...

  2. centos6.5安装supervisor

    centos6.5安装supervisor,有很多种方法,但是有很多坑,为了以后不重复踩坑,这里记录一下. 一.如果用yum install supervisor, 默认安装的是2.1.9版本,2.x ...

  3. Linux Zookeeper 安装, 带视频

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 面试必备+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并发 ...

  4. 针对上一篇prim最后的完善结果

    edge* Graph::prim(int cur) { if (cur >= this->vertexNum) { return NULL; } int *weight = new in ...

  5. 分布式全局唯一ID的实现

    分布式全局唯一ID的实现 前言 上周末考完试,这周正好把工作整理整理,然后也把之前的一些素材,整理一番,也当自己再学习一番. 一方面正好最近看到几篇这方面的文章,另一方面也是正好工作上有所涉及,所以决 ...

  6. IDEA去除掉虚线,波浪线,和下划线实线的方法

    初次安装使用IDEA,总是能看到导入代码后,出现很多的波浪线,下划线和虚线,这是IDEA给我们的一些提示和警告,但是有时候我们并不需要,反而会让人看着很不爽,这里简单记录一下自己的调整方法,供其他的小 ...

  7. 基于Maven 的 Spring MVC

    Spring MVC 他是基于MVC的设计模式做出来的,他是Spring对Servlet的进一步的封装 MVC:Model  View  Controller 如何使用Spring MVC?(Spri ...

  8. ling to sql创建临时变量 let的使用

    使用let赋值给临时变量 var dailys = from f in _postgreDbContext.draws let temp = f.review_time.Value.Date wher ...

  9. VueUI -- iView4.0简单使用

    一.iView(View UI) 1.简介 官网:https://www.iviewui.com/ 仓库:https://github.com/view-design/ViewUI iView 与 V ...

  10. TSC打印机防重码在线检测系统

    条码标签作为产品的一个身份标识,被应用得越来越普及,但随着使用量的增大,在打印条码流水号的过程中,偶尔会出现打印重复号码的标签出现,这样对产品生产及管理过程中会产生极大的混乱,会收到严重的客诉及返工, ...