Назад | Перейти на главную страницу

Вывод всех баз данных mysqldump не удалось запустить в MySQL 8.0 из-за удаления базы данных mysql

Постановка задачи

mysqldump --add-drop-database --all-database создает дамп, содержащий

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

Это ожидается, и я считаю, что это правильное поведение.

Тем не менее, если поместить этот дамп на сервер mysql, т.е. cat dump | mysql -u root -pxxxx (На аккаунте СУПЕР) жалуется ERROR 3552 (HY000) at line 30: Access to system schema 'mysql' is rejected.

Вопрос

Есть ли способ заставить его работать, не редактируя дамп вручную. Или sed / grep для удаления оскорбительной строки - мой единственный выбор?

Раньше это работало в MySQL 5.6 (т.е. допускает удаление базы данных mysql)

У учетной записи root есть следующие привилегии 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

Сервер и клиент: MySQL 8.0.12

Думаю не надо дамп / восстанавливать mysql схема базы данных.

Если вам нужен автоматический метод, который пропускает mysql база данных (или любая другая база данных, которую вы не хотите сбросить), не указывая каждую базу данных, проверьте ответ на этот вопрос для простого скрипта для автоматического получения всех баз данных, кроме тех, которые вы хотите игнорировать.