Declaração do problema
mysqldump --add-drop-database --all-database
cria um dump que contém
....
/*!40000 DROP DATABASE IF EXISTS `mysql`*/;
....
Isso é esperado e acredito ser um comportamento correto.
No entanto, se colocar esse dump em um servidor mysql, ou seja cat dump | mysql -u root -pxxxx
(a conta tem SUPER), ele reclamaERROR 3552 (HY000) at line 30: Access to system schema 'mysql' is rejected.
Pergunta
Existe alguma maneira de fazer funcionar, sem editar manualmente o dump. Ou sed/grep para remover a linha incorreta é minha única opção?
Isso costumava funcionar no MySQL 5.6 (ou seja, aceita a eliminação do banco de dados mysql)
A conta root tem os seguintes privilégiosSELECT, 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 e Cliente: MySQL 8.0.12
Responder1
Acho que não há necessidade de descartar/restaurar o mysql
esquema do banco de dados.
Se você deseja um método automatizado que ignore o mysql
banco de dados (ou qualquer outro banco de dados que vocênãodeseja despejar) sem especificar cada banco de dados, verifique a resposta paraessa questãopara que um script simples obtenha automaticamente todos os bancos de dados, exceto aqueles que você deseja ignorar.