我使用以下命令获取了数据库的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'
是否有不同的方法将用户和权限从一个数据库复制到另一个数据库?
答案 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'@'%'
我可以轻松获取输出,添加分号语句终止符,进行任何其他必要的修改,并在另一个数据库上执行它们。
对于我需要迁移的任何用户,请重复一遍。