問題文

問題文

問題文

mysqldump --add-drop-database --all-database ダンプを作成します。

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

これは予想通りであり、正しい動作であると信じています。

しかし、このダンプをMySQLサーバーにcatすると、つまりcat dump | mysql -u root -pxxxx (アカウントにSUPER権限がある)、エラーが発生します。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データベース(または他のデータベース)をスキップする自動化された方法が必要な場合は、しないダンプしたいデータベースを一つ一つ指定せずに、この質問無視したいデータベースを除くすべてのデータベースを自動的に取得する簡単なスクリプト。

関連情報