问题陈述

问题陈述

问题陈述

mysqldump --add-drop-database --all-database 创建包含以下内容的转储

....
/*!40000 DROP DATABASE IF EXISTS `mysql`*/;
....

这是意料之中的,我相信这是一种正确的行为。

但是,如果将此转储放入 mysql 服务器cat dump | mysql -u root -pxxxx (即该帐户具有 SUPER 权限),它会抱怨ERROR 3552 (HY000) at line 30: Access to system schema 'mysql' is rejected.

问题

有没有办法让它工作,而无需手动编辑转储。或者 sed/grep 删除有问题的行是我唯一的选择?

这曾经在 MySQL 5.6 中工作(即它接受删除 mysql 数据库)

root 账户具有以下权限SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, CREATE TABLESPACE, CREATE ROLE, DROP ROLE, BACKUP_ADMIN, RESOURCE_GROUP_ADMIN, XA_RECOVER_ADMIN

服务器和客户端:MySQL 8.0.12

答案1

我认为没有必要转储/恢复mysql数据库模式。

如果你想要一个自动化的方法,跳过mysql数据库(或任何其他你不需要的数据库)想要转储)而不指定每个数据库,检查答案这个问题一个简单的脚本可以自动获取除您想要忽略的数据库之外的所有数据库。

相关内容