关于 MySQL 服务器 GRANT 审查的建议

关于 MySQL 服务器 GRANT 审查的建议

所以我要做一些繁琐的工作。我们有大约 10 台服务器,每台服务器大约有 4 个 MySQL 用户(加上 mysql-root)。所有这些用户都拥有对其各自架构的完全访问权限。

现在我们决定他们只应享有基本SELECT, INSERT, UPDATE权利(因为这就是他们所需要的)。

看着它们REVOKE,我感觉既然它们已经添加,GRANT ALL ON db.*我需要首先撤销所有权限,然后授予我需要的权限。

现在的问题是,有没有一个好的方法可以同时为所有用户(在一台服务器上)执行此操作,还是我需要逐一检查?

编辑:

设置如下:

服务器 1:

具有 db_a 访问权限的用户 dbuser_a

用户 dbuser_b 有权访问 db_b ...

服务器2:

具有 db_c 访问权限的用户 dbuser_c

用户 dbuser_d 有权访问 db_d ...

答案1

创建一个~/.my.cnf文件来存储你的 MySQL 密码,如下所示:

[mysql]
user            = root
password        = secr3t
host            = ...

记得要这样做chmod 600

然后,您可以使用以下 shell 代码片段撤销所有用户的所有权限:

mysql --skip-column-names -e 'select user,host from mysql.user;' | grep -v root | \
while read account; do
    mysql -e "revoke all privileges on db.* from '`echo $account | \ 
       awk '{ print $1 }'`'@'`echo $account | awk '{ print $2 }'`'; flush privileges;"
done

对授予您想要的特权执行相同操作。


更新

on db.*您还可以通过从上面删除以下内容来撤销用户的所有权限:全局、数据库、表、例程...... :

mysql --skip-column-names -e 'select user,host from mysql.user;' | grep -v root | \
while read account; do
    mysql -e "revoke all privileges, grant option from '`echo $account | \ 
       awk '{ print $1 }'`'@'`echo $account | awk '{ print $2 }'`'; flush privileges;"
done

相关内容