[mysql]-mysql限制指定用户不能访问指定表
目的:目前开发,测试,运营,产品等都具有数据库读取权限。为数据安全,部分人员仅开放部分表。对于一些敏感的表不再对所有人开放。
运营需要关闭以下表的查询权限:
config_info
exchange_code
产品需要关闭以下表的查询权限:
config_info
测试需要关闭以下表的查询权限:
config_info
创建限制
执行结果
查看RDS控制台 新账号创建成功
登陆只读账号查看权限
的确没有exchange_code 这个表的读权限
其余账号也是类似方法创建。
可以每天定时执行一次。或者每天查一下昨天创建的表,然后单独给这些表加一次权限。
#!/bin/sh # @Time : 2019-11-22 # @Author : jiaminxu # @Description : 用于授权非限制的表
mysql -uroot -p123456 -hlocalhost ac -e "show tables" >ac_all_tables.txt
operation_passwd="123456" produce_passwd="123456" test_passwd="123456"
echo 运营密码 $operation_passwd 产品密码 $produce_passwd test密码 $test_passwd for i in `cat ac_all_tables.txt |tr -d '"' `
do
if [[ "config_info" =~ "$i" ]] || [[ "exchange_code" =~ "$i" ]];then echo "[tags]限制的表单独执行 $i"
sleep 5 else echo "[tags]非限制的表单独执行: $i" mysql -uroot -p123456 -hlocalhost ac -e "grant select ON ac.`echo $i |tr -d '"'` to [email protected]'%' identified by \"$operation_passwd\";" mysql -uroot -p123456 -hlocalhost ac -e "grant select ON ac.`echo $i |tr -d '"'` to [email protected]'%' identified by \"$produce_passwd\";" mysql -uroot -p123456 -hlocalhost ac -e "grant select ON ac.`echo $i |tr -d '"'` to [email protected]'%' identified by \"$test_passwd\";"
fi
#echo $i |tr -d '"' #echo "grant select ON ac.`echo $i |tr -d '"'` to [email protected]'%' identified by '^PFeGg3w';"
done # 给测试和产品添加exchange_code 表权限 mysql -uroot -p123456 -hlocalhost ac -e "grant select ON ac.exchange_code to [email protected]'%' identified by \"$produce_passwd\";" mysql -uroot -p123456 -hlocalhost ac -e "grant select ON ac.exchange_code to [email protected]'%' identified by \"$test_passwd\";" |