Shell +Cygwinterminal+WinMySQL 传参数授权
前言:新公司因为部分业务原因有好几百组win机器装MySQL授权登录比较麻烦,简单的写了一个shell传值自动授权的脚本,保存复用。
#!/bin/bash
#author liding@zlhy.com function helpfunc(){
echo -e "\033[36m Please check your parameters, -D for db name, -M main library IP, -I for authorized IP address
options:
-D Need to authorize the db name
-M Execute on this IP
-I Authorized IP
-T Authorization type 1 is the program account, 2 read-only account, 3 administrator account ; you can specify multiple to ',' separation
eg : mysqlha_winreplication.sh -D -M -I -T
Generate 3 accounts:
1st: program link account. permissions: SELECT, INSERT, UPDATE, DELETE, EXECUTE, no DROP, CREATE;
2nd: read-only account. permissions: Select
3rd: administrator account. permissions: ALL \033[0m" }
############################################
type=2 if [ $# -lt 1 ] ;
then
helpfunc
exit 1
else while getopts "M:D:I:T:" Option
do
case $Option in
D) db=$OPTARG;;
M) master_ip=$OPTARG;;
I) grant_ip=$OPTARG;;
T) type=$OPTARG;;
*) helpfunc; exit 1; ;;
esac
done fi type=$(echo $type |tr ',' ' ')
function GetPwd(){
status=$1
if [ $status -eq 0 ];then
A=`head -c 500 /dev/urandom | tr -dc A-Z |head -c 1`
B=`head -c 500 /dev/urandom | tr -dc [:alnum:]| head -c 6`
C=`echo $RANDOM$RANDOM|cut -c 2`
echo $A$B$C
else
A=`head -c 500 /dev/urandom | tr -dc A-Z |head -c 1`
B=`head -c 500 /dev/urandom | tr -dc [:alnum:]| head -c 12`
C=`echo $RANDOM$RANDOM|cut -c 2`
echo $A$B$C
fi
} # echo -e "\033[42;37m \033[0m"
function GetProgram(){
pro_pwd=$(GetPwd 0)
#ssh administrator@${master_ip} "cd /cygdrive/d/data/mysqld_master && cmd /c sql.bat \"$sql\"
##读写
pro_sql="GRANT SELECT,INSERT,UPDATE,DELETE,EXECUTE ON ${db}.* TO ${db}@'"localhost"' IDENTIFIED BY '"$pro_pwd"'; "
pro_sql1="GRANT SELECT,INSERT,UPDATE,DELETE,EXECUTE ON ${db}.* TO ${db}@'"${grant_ip}"' IDENTIFIED BY '"$pro_pwd"'; "
for sql in "$pro_sql" "$pro_sql1"
do
if ssh administrator@${master_ip} "cd /cygdrive/d/data/mysqld_master && cmd /c sql.bat \"$sql\" ";then
:
else
echo -e "\033[31m To grant authorization{IP:${master_ip} 权限:读写 } faild \033[0m"
fi
done
echo -e "\033[32m To grant authorization{IP:${master_ip} 权限:读写 } sucess \033[0m"
echo -e "\033[32m 读写账户:${db} \033[0m"
echo -e "\033[32m 读写密码:${pro_pwd} \033[0m"
} function GetSelect(){
select_pwd=$(GetPwd 1)
##只读
select_sql="GRANT SELECT ON ${db}.* TO ${db}_r@'"localhost"' IDENTIFIED BY '"$select_pwd"';"
select_sql1="GRANT SELECT ON ${db}.* TO ${db}_r@'"${grant_ip}"' IDENTIFIED BY '"$select_pwd"';"
for sql in "$select_sql" "$select_sql1"
do
if ssh administrator@${master_ip} "cd /cygdrive/d/data/mysqld_master && cmd /c sql.bat \"$sql\" ";then
:
else
echo -e "\033[31m To grant authorization{IP:${master_ip} 权限:只读 } faild \033[0m"
fi
else
echo -e "\033[31m To grant authorization{IP:${master_ip} 权限:只读 } faild \033[0m"
fi
done
echo -e "\033[32m To grant authorization{IP:${master_ip} 权限:只读 } sucess \033[0m"
echo -e "\033[32m 只读账户:${db}_r \033[0m"
echo -e "\033[32m 只读密码:${select_pwd} \033[0m" } function GetAdmin(){
admin_pwd=$(GetPwd 2)
#管理员
admin_sql="grant select,insert,update,delete,create,drop,alter,index,lock tables ,CREATE TEMPORARY TABLES ON ${db}.* TO ${db}_admin@'"localhost"' IDENTIFIED BY '"$admin_pwd"';"
admin_sql="grant select,insert,update,delete,create,drop,alter,index,lock tables ,CREATE TEMPORARY TABLES ON ${db}.* TO ${db}_admin@'"127.0.0.1"' IDENTIFIED BY '"$admin_pwd"';"
for sql in "$admin_sql" "$admin_sql1"
do
if ssh administrator@${master_ip} "cd /cygdrive/d/data/mysqld_master && cmd /c sql.bat \"$sql\" ";then
:
else
echo -e "\033[31m To grant authorization{IP:${master_ip} 权限:管理员 } faild \033[0m"
fi
done
echo -e "\033[32m To grant authorization{IP:localhost 权限:管理员 } sucess \033[0m"
echo -e "\033[32m 管理员账户:${db}_admin \033[0m"
echo -e "\033[32m 管理员密码:${admin_pwd} \033[0m"
} function main(){
for stu in $type
do
if [ $stu -eq 1 ];then
GetProgram
elif [ $stu -eq 2 ];then
GetSelect
elif [ $stu -eq 3 ];then
GetAdmin
else
echo -e "\033[31m Please check if your type parameter is in range \033[0m"
fi
done
}
main
调用win sql.bat
@echo off set allparam=%1 D:\data\mysqld_master\bin\mysql.exe -uroot -e %allparam%
or +port
@echo off set allparam=%2
set port=%1 echo %1
echo %2
D:\data\mysqld_slave\bin\mysql.exe -uroot -P%port% -e %allparam%
eg : mysqlha_winreplication.sh -D -M -I -T
Shell +Cygwinterminal+WinMySQL 传参数授权的更多相关文章
- shell 向python传参数,空格引发的问题
昨天用一个shell脚本,调用一个python脚本,并把shell脚本中用 time1=`date "+%Y-%m-%d %H:%M:%S"`生成的时间戳作为参数,传到python ...
- shell向python传参数
想要在shell中调用python脚本时实现: python pyServer.py argu1 argu2 argu3 利用 sys.argv 即可读取到 相应参数: # coding=utf-8 ...
- Shell script 传参数处理(默认变量)
变量 含义 $0:shell脚本的名字: $1 位置参数 #1 $2 - $9 位置参数 #2 - #9 ${10} 位置参数 #10 "$*" :代表"$1c$2c$3 ...
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...
- shell编程之脚本参数$@,$*,$#,$$,$?的含义
#首先按顺序解释各个参数的含义 1.$0 表示脚本的文件名, 具体的路径信息和执行命令时的相对位置有关,例如 sakura@mi-OptiPlex-7050:~/sh$ sh args.sh arg ...
- 传参数应该用哪种形式——值、引用、指针?
类型:C++ & Qt4,创建时间:十二月 30, 2011, 7:43 p.m. 标题无"转载"即原创文章,版权所有.转载请注明来源:http://hgoldfish.c ...
- Mybatis传参数
1使用@Param注解传参数 mapper接口:public void updateUser(@Param("user")User user)throws Exception; m ...
- 如何给main传参数
main 函数的参数有连个argc argcv[] argc 是参数个数 argcv是参数的数组指针,且argcv的第一个参数是默认程序路径加程序名 给main传参数,需要在命令行启动程序时设置 如 ...
- mvc中多参数URL会很长,首次加载不传参数让url很短,路由规则实现方法[bubuko.com]
如要实现列表中地址全路径“bubuko-11-2.html”,在首次进入时,使用短路径“bubuko.html”,只有再次href后才显示全路径“bubuko-11-2.html”,下面使用路由规则来 ...
随机推荐
- MyEclipse2014快速配置Spring & Spring Testing, Spring AOP简单使用
1.新建项目 2.右击项目,如图,利用myeclipse自动导入spring 3.在弹出的对话框中一直next到最后,在最后的页面中勾选Spring Testing,完成. 4.在src下的appli ...
- 剑指offer-第六章面试中的各项能力(数组中只出现一次的数字)
题目:输入一个数组,该数组中有两个只出现一次的数字,其他的数字都出现两次,输出出只出现一次的数字. 思路:首先,我们可以将这个数组分成两份,一份里面放一个只出现一次的数字.那么我们该怎么分呢?将整个数 ...
- 【LeetCode】129. Sum Root to Leaf Numbers
Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number ...
- matlab_移动文件和复制文件
clear clc cd('C:\Users\xx\Desktop\learning'); % 设置当前目录 % 此时learning文件夹中有:文件夹x, 文件夹y, 文件a.png, 文件b.pn ...
- centos7 & ubuntu14.02安装sublime 3
Centos7安装Sublime Text 3.0正式版 1.安装 GPG 公钥rpm -v --import https://download.sublimetext.com/sublimehq-r ...
- 小程序切换账户拉取仓库文件的appid提示
小程序切换账户拉取仓库文件,拉取后appid会提示项目不是当前appid的项目,因为切换了账户,而每个小程序账户只有一个appid,所以会冲突 去project.config.json里吧appid改 ...
- centOS下 JDK的三种安装方式
由于各Linux开发厂商的不同,因此不同开发厂商的Linux版本操作细节也不一样,今天就来说一下CentOS下JDK的安装: 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创 ...
- 让你的 Nginx 的 RTMP 直播具有统计某频道在线观看用户数量的功能
你的 Nginx 已经有了 RTMP 直播功能的话,如果你还想统计某直播频道当前观看用户量的话,可以加入 with-http_xslt_module 模块.具体步骤如下: 1.查看原来的 ...
- Ubuntu apt-get卸载小记
过sudo apt-get install xxxx 安装软件后,总是无法卸载干净,这里以Apache 为例,提供方法:首先sudo apt-get remove apache2再sudo apt-g ...
- 分布式锁之三:Redlock实现分布式锁
之前写过一篇文章<如何在springcloud分布式系统中实现分布式锁?>,由于自己仅仅是阅读了相关的书籍,和查阅了相关的资料,就认为那样的是可行的.那篇文章实现的大概思路是用setNx命 ...