我想从MySQL数据库备份与特定用户相关的所有权限(例如u_1
),并在另一台服务器中恢复该权限。如上所述here,The 'mysql' database contains users/privileges/passwords.
因此,我必须备份mysql
数据库(mysql.user
,mysql.db
,...)的所有表中的所有相关数据。我可以运行这个命令:
$ mysqldump -u root --flush-privileges -r mysql.sql -p mysql
但当然mysql.sql
包含所有用户和所有权限。
我也试过这个命令:
$ mysqldump -u root -p --where="user.user='u_1'" mysql user> mysql.sql
但正如预期的那样,它只包含一行mysql.user
表。
除了u_1
以外,有没有办法去除其他用户?
答案 0 :(得分:3)
尝试这些选项(为了清晰起见,换行符):
$ mysqldump -u root -p
--where="user='u_1'"
--complete-insert
--extended-insert
--no-create-info
mysql
user db tables_priv columns_priv procs_priv proxies_priv
> mysql.sql
或者......让我们以“艰难的方式”来称呼上述解决方案。
这应该是简单的方法:
$ mysql -u root -p
--skip-column-names
-e "SHOW GRANTS FOR 'u_1';"
> grants.sql
答案 1 :(得分:0)
我会用:
pt-show-grants --only u_1
pt-show-grants是免费的Percona工具包中的一个工具。
请参阅https://www.percona.com/doc/percona-toolkit/LATEST/pt-show-grants.html