概述
近段时间,由于项目较多,开发人员频繁要求数据库账号授权。本来想着把测试环境的数据库权限直接给他们自己管理就好了,可领导不同意。那好吧,只能给他们开权限呗。时间长了,感觉这样的工作实在枯燥、乏味,但又不得不干。于是就想着,写个脚本吧,免得每次还得登陆数据库grant授权,希望能对工作效率有所提高。
下面是我写的一个简单的shell脚本,
#!/bin/sh
#
# Mysql数据库用户权限管理
#
. /etc/rc.d/init.d/functions
#定义全局变量mysql
MYSQLCMD="/usr/local/mysql/bin/mysql"
#声明添加用户授权函数
function add_auth()
{
read -p 'Port: ' add_auth[0]
read -p 'DB [db.* | db.t1]: ' add_auth[1]
read -p 'Permisions [SELECT,UPDATE...]: ' add_auth[2]
read -p "Authorized to host's IP: " add_auth[3]
read -p 'Username: ' add_auth[4]
read -s -p 'Password: ' add_auth[5]#隐藏密码回显
#定义局部参数变量
PORT=${add_auth[0]} #数据库端口
DB=${add_auth[1]}#需要授权的数据库或表
LIMITS=${add_auth[2]}#权限类型
IP=${add_auth[3]}#授权远程主机IP登陆
USERNAME=${add_auth[4]}#连接用户名
PASSWD=${add_auth[5]}#密码
SOCKT="/tmp/mysql${PORT}.sock"#数据库连接SOCK文件
#授权
$MYSQLCMD -S $SOCKT -e "grant $LIMITS on ${DB} to "${USERNAME}"@"${IP}" identified by "$PASSWD";" && ret1=0
#刷新授权表
$MYSQLCMD -S $SOCKT -e "FLUSH PRIVILEGES;" && ret2=0
if [ $ret1 = 0 ] && [ $ret2 = 0 ]
then
echo -e "n 33[32;49;1m Successfully Authorized for user $USER. 33[39;49;0m"
fi
}
#声明撤销用户权限函数drop_user()
function drop_user()
{
read -p 'Port: ' revoke_auth[0]
read -p 'Need to revoke username: ' revoke_auth[1]
read -p 'Revoke Host: ' revoke_auth[2]
PORT=${revoke_auth[0]}
USER=${revoke_auth[1]}
HOST=${revoke_auth[2]}
SOCKT="/tmp/mysql${PORT}.sock"
$MYSQLCMD -S $SOCKT -e "drop user ${USER}@"${HOST}";" && ret1=0
$MYSQLCMD -S $SOCKT -e "FLUSH PRIVILEGES;" && ret2=0
if [ $ret1 = 0 ] && [ $ret2 = 0 ]
then
echo -e "n 33[32;49;1m Successfully to drop user $USER. 33[39;49;0m"
fi
}
#读取用户输入,判断添加用户授权OR撤销用户
read -p 'Add or revoke the Authorization? [ add | drop ] ' n
case "$n" in
'add')
add_auth
;;
'drop')
drop_user
;;
*)
echo "Select: add or drop"
esac
最后
以上就是健壮煎饼为你收集整理的mysql权限脚本_Shell脚本之Mysql授权的全部内容,希望文章能够帮你解决mysql权限脚本_Shell脚本之Mysql授权所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复