使用mysql转储的授权填充mysql数据库

时间:2016-08-09 22:39:47

标签: mysql database mysqldump mysqlimport

我使用以下命令获取了数据库的mysql转储:

mysqldump --single-transaction --all-databases --flush-privileges -h HOST -u USER -p PASSWORD

我故意使用--all-databases标志来确保我获得了我创建的所有用户以及他们授予的权限。但是当我以root用户身份运行导入到新数据库时,我收到此错误:Access denied for user 'root'@'%' to database 'mysql'

是否有不同的方法将用户和权限从一个数据库复制到另一个数据库?

1 个答案:

答案 0 :(得分:0)

我使用SHOW GRANTS语句来获取权限,例如:

SHOW GRANTS FOR foo@'%'

返回的内容如下:

Grants for foo@%                                                                                                                  
--------------------------------------------------------------------------------------------------
GRANT USAGE ON *.* TO 'foo'@'%' IDENTIFIED BY PASSWORD '*B3CD------------------------------------'
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, EXECUTE ON `db`.* TO 'foo'@'%'
GRANT SELECT ON `mysql`.`proc` TO 'foo'@'%'

我可以轻松获取输出,添加分号语句终止符,进行任何其他必要的修改,并在另一个数据库上执行它们。

对于我需要迁移的任何用户,请重复一遍。