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”,下面使用路由规则来 ...
随机推荐
- HDU - 3949 :XOR(线性基,所有集合的不同异或和中,求从小到大第K个)
XOR is a kind of bit operator, we define that as follow: for two binary base number A and B, let C=A ...
- BZOJ4560 [JLoi2016]字符串覆盖
题意 字符串A有N个子串B1,B2,-,Bn.如果将这n个子串分别放在恰好一个它在A中出现的位置上(子串之间可以重叠) 这样A中的若干字符就被这N个子串覆盖了.问A中能被覆盖字符个数的最小值和最大值. ...
- bzoj 1597 [Usaco2008 Mar]土地购买——斜率优化dp
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1597 又一道斜率优化dp.负数让我混乱.不过仔细想想还是好的. 还可以方便地把那个负号放到x ...
- Use the dkms from EPEL when install CUDA Toolkits on CentOS
###Use the dkms from EPEL. yum install epel-release yum install dkms # download the rpm from the NVi ...
- 从JVM的角度解析String
1. 字符串生成过程 我们都知道String s = "hello java";会将“hello java”放入字符串常量池,但是从jvm的角度来看字符串和三个常量池有关,clas ...
- 【转】JMeter工作基本原理
JMeter可以作为Web服务器与浏览器之间的代理网关,以便捕获浏览器的请求和Web服务器的响应,这样就很容易地生成性能测试脚本, 有了性能测试脚本,JMeter就可以通过线程组来模拟真实用户对Web ...
- PTA 说反话-加强版(20 分)(字符串处理)
说反话-加强版(20 分) 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出. 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串.字符串由若干单词和若干空 ...
- python下载指定页面的所有图片
实现步骤: 1.下载页面源码 2.对页面进行解析,获取页面中所有的图片路径 3.下载图片到指定路径 代码实例: # coding: utf-8 import urllib2 # 该模块用于打开页面地址 ...
- 【转】分布式存储和一致性hash
本文我将对一致性算法作介绍,同时谈谈自己对一致性hash和一般意义上的hash算法的区别 hash是什么 hash即hash算法,又称为散列算法,百度百科的定义是 哈希算法将任意长度的二进制值映射为较 ...
- AngryFuzz3r-web扫描工具
项目地址:https://github.com/ihebski/angryFuzzer 下载完后打开文件 安装一下所需的Python模块 root@sch01ar:/sch01ar/angryFuzz ...