Declaração do problema

Declaração do problema

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 mysqlesquema do banco de dados.

Se você deseja um método automatizado que ignore o mysqlbanco 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.

informação relacionada