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

Описание проблемы

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

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

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

Тем не менее, если поместить этот дамп в сервер mysql, то есть cat dump | mysql -u root -pxxxx (У учетной записи есть SUPER), он жалуется ОШИБКА 3552 (HY000) в строке 30: Доступ к системной схеме mysql отклонен.

Вопрос

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

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

У учетной записи root есть следующие привилегии SELECT, INSERT , ОБНОВЛЕНИЕ, УДАЛЕНИЕ, СОЗДАНИЕ, УДАЛЕНИЕ, ПЕРЕЗАГРУЗКА, ВЫКЛЮЧЕНИЕ, ПРОЦЕСС, ФАЙЛ, ССЫЛКИ, ИНДЕКС, ИЗМЕНЕНИЕ,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 TABLACK RESOURCE_GROUP_ADMIN, XA_RECOVER_ADMIN

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

1
задан 5 September 2018 в 10:13
1 ответ

Я думаю, нет необходимости сбрасывать / восстанавливать ] Схема базы данных mysql .

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

0
ответ дан 4 December 2019 в 03:40

Теги

Похожие вопросы