web-dev-qa-db-ja.com

mysqldumpを復元すると、ルーチンのユーザー権限が失われますか?

Mysqldumpを復元しようとすると、一部のルーチンに対するユーザー権限が失われます。私が知る限り、mysqlスキーマの後にロードされるスキーマにあるルーチンにはユーザー権限がありません。 (たとえば、スキーマ「abc」にはルーチンに対する正しいユーザー権限がありますが、スキーマ「qrs」にはありません。)

私が使用しているダンプは、次の方法で作成されます。

mysqldump --allow-keywords --all-databases --single-transaction --events --routines --flush-logs --flush-privileges --hex-blob

過去にこの問題が発生した場合は、ダンプをロードしてからmysqlスキーマのみをリロードします。これにより、不足しているユーザーにルーチンに対する権限が付与されます。

ただし、最近GTIDの使用を開始しました。その結果、GTIDが重複しているため、ダンプからmysqlスキーマだけを再ロードできません。そうしようとすると、次のエラーが発生します。

@@GLOBAL.GTID_PURGED cannot be changed: the added gtid set must not overlap with @@GLOBAL.GTID_EXECUTED

この方法で作成されたダンプをリロードし、別のサーバーにダンプをリロードした後、すべてのユーザー権限をまったく同じにする方法はありますか?

1
Sam Pearson

Mysqldumpステートメントに--set-gtid-purged=OFFフラグを追加する必要があります。これにより、ダンプファイルにset-gtid-purged行が書き込まれなくなります。

1
Ryan Bell