所以我在做一些单调乏味的工作。 我们有大约10台服务器,每台服务器大约有4个MySQL用户(加上mysql-root)。 所有这些用户都可以完全访问各自的模式。
现在我们已经决定他们应该只有基本的SELECT, INSERT, UPDATE权限(因为这是他们所需要的)。
看看REVOKE我感觉到,因为已经添加了GRANT ALL ON db.*我需要先撤消所有的priv,然后授予我需要的。
现在的问题。 对于所有用户(在一台服务器上)是否有一个好的方法可以同时进行,还是需要逐一进行检查?
编辑:
设置是这样的:
服务器1:
用户dbuser_a可以访问db_a
用户dbuser_b可以访问db_b …
服务器2:
用户dbuser_c可以访问db_c
用户dbuser_d可以访问db_d …
创build一个~/.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
做同样的授予你想要的特权。
UPDATE
您也可以通过从上面删除on db.*来撤销所有权限:全局,数据库,表,例程等等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