Не удалось запустить вывод всех баз данных 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).
Корневая учетная запись имеет следующие привилегии 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
1 ответ
Я думаю, что нет необходимости сбрасывать / восстанавливать mysql
схема базы данных.
Если вы хотите автоматизированный метод, который пропускает mysql
базу данных (или любую другую базу данных, которую вы не хотите сбрасывать) без указания каждой отдельной базы данных, проверьте ответ на этот вопрос, чтобы найти простой сценарий для автоматического получения всех баз данных, кроме тех, которые вы хотите игнорировать.