Problemstellung

Problemstellung

Problemstellung

mysqldump --add-drop-database --all-database erstellt einen Dump, der enthält

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

Das ist erwartungsgemäß und meiner Meinung nach ein korrektes Verhalten.

Wenn dieser Dump jedoch in einen MySQL-Server übertragen wird cat dump | mysql -u root -pxxxx (das Konto hat SUPER), beschwert er sichERROR 3552 (HY000) at line 30: Access to system schema 'mysql' is rejected.

Frage

Gibt es eine Möglichkeit, es zum Laufen zu bringen, ohne den Dump manuell zu bearbeiten? Oder ist sed/grep zum Entfernen der fehlerhaften Zeile meine einzige Wahl?

Dies funktionierte früher in MySQL 5.6 (d. h. es akzeptierte das Löschen der MySQL-Datenbank).

Der Root-Account hat folgende RechteSELECT, 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

Server und Client: MySQL 8.0.12

Antwort1

Ich denke, es besteht keine Notwendigkeit, das mysqlDatenbankschema zu sichern/wiederherzustellen.

Wenn Sie eine automatisierte Methode wünschen, die die mysqlDatenbank (oder jede andere Datenbank, die Sienichtmöchten), ohne jede einzelne Datenbank anzugeben, überprüfen Sie die Antwort aufdiese Fragefür ein einfaches Skript, um automatisch alle Datenbanken abzurufen, außer denen, die Sie ignorieren möchten.

verwandte Informationen