Planteamiento del problema
mysqldump --add-drop-database --all-database
crea un volcado que contiene
....
/*!40000 DROP DATABASE IF EXISTS `mysql`*/;
....
Esto es lo esperado y creo que es un comportamiento correcto.
Sin embargo, si transfiere este volcado a un servidor MySQL, es decir cat dump | mysql -u root -pxxxx
(la cuenta tiene SUPER), se queja.ERROR 3552 (HY000) at line 30: Access to system schema 'mysql' is rejected.
Pregunta
¿Hay alguna forma de hacerlo funcionar sin editar manualmente el volcado? ¿O sed/grep para eliminar la línea ofensiva es mi única opción?
Esto solía funcionar en MySQL 5.6 (es decir, acepta eliminar la base de datos MySQL)
La cuenta raíz tiene los siguientes privilegiosSELECT, 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
Servidor y Cliente: MySQL 8.0.12
Respuesta1
Creo que no es necesario volcar/restaurar el mysql
esquema de la base de datos.
Si desea un método automatizado que omita la mysql
base de datos (o cualquier otra base de datos quenodesea volcar) sin especificar cada base de datos, verifique la respuesta aesta preguntapara que un script simple obtenga automáticamente todas las bases de datos excepto aquellas que desea ignorar.