不要搞乱mysql db。除了users表外,还有更多的事情要做。最好的选择是“ SHOW GRANTS FOR”命令。我的.bashrc(实际上是我的.bashrc中的.bash_aliases)中有很多CLI维护别名和功能。该功能:
mygrants()
{
mysql -B -N $@ -e "SELECT DISTINCT CONCAT(
'SHOW GRANTS FOR \'', user, '\'@\'', host, '\';'
) AS query FROM mysql.user" | \
mysql $@ | \
sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/## \1 ##/;/##/{x;p;x;}'
}
第一个mysql命令使用SQL生成有效的SQL,该管道通过管道传递给第二个mysql命令。然后将输出通过sed传递给管道,以添加漂亮的注释。
命令中的$ @将允许您将其称为:mygrants --host = prod-db1 --user = admin --password = secret
您可以像这样使用完整的unix工具套件:
mygrants --host=prod-db1 --user=admin --password=secret | grep rails_admin | mysql --host=staging-db1 --user=admin --password=secret
这是移动用户的正确方法。您的MySQL ACL已使用纯SQL进行了修改。