A saída de todos os bancos de dados mysqldump falhou em rodar no MySQL 8.0 por causa da queda do banco de dados 'mysql'

1

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 que seja um comportamento correto.

No entanto, se cat'ing este despejo em um servidor mysql, ou seja, cat dump | mysql -u root -pxxxx (A conta tem SUPER), ele reclama ERROR 3552 (HY000) at line 30: Access to system schema 'mysql' is rejected.

Pergunta

Existe alguma maneira de fazer isso funcionar, sem editar manualmente o despejo. Ou sed / grep para remover a linha ofensiva é a minha única escolha?

Isso costumava funcionar no MySQL 5.6 (ou seja, ele aceita a remoção do banco de dados mysql)

A conta root tem os seguintes privilégios 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

Servidor e Cliente: MySQL 8.0.12

    
por HelloSam 05.09.2018 / 08:09

1 resposta

0

Acho que não há necessidade de despejar / restaurar o esquema do banco de dados mysql .

Se você quiser um método automatizado que pule o banco de dados mysql (ou qualquer outro banco de dados que você não queira desejar despejar) sem especificar cada banco de dados, verifique a resposta para esta questão para um script simples obtenha automaticamente todos os bancos de dados, exceto aqueles que você deseja ignorar.

    
por 05.09.2018 / 09:04