1. ホーム
  2. mysql

[解決済み] mysqldump がフルスキーマをダンプする際に必要な最小限の GRANT? (TRIGGERがありません!!)

2023-05-18 17:44:45

質問

私は、MySQL のユーザー ダンプ という名前の MySQL ユーザを、次のような権限で使用しています。

GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ...
GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%'
GRANT SELECT, LOCK TABLES ON `myschema`.* TO 'dump'@'%'

すべてのデータ(トリガーとプロシージャを含む)をダンプするために ダンプ ユーザを使用します。私は以下の方法でmysqldumpを呼び出します。

mysqldump -u dump -p --routines --triggers --quote-names --opt \
    --add-drop-database --databases myschema > myschema.sql

ダンプされたファイルには トリガーがありません。 !!

トリガは、mysqldump で次のようにすると正しくダンプされます。 ルート MySQL ユーザで試します。

mysqldump -u root -p --routines --triggers --quote-names --opt \
    --add-drop-database --databases myschema > myschema.sql

ということは、パーマの問題でしょうか......どのような の余分な付与は何ですか? ダンプ MySQL ユーザーがフルダンプを正しく実行するために必要なものですか?

どのように解決するのですか?

完全なダンプというのは、例えば VIEWEVENT が必要でしょう。

GRANT USAGE ON *.* TO 'dump'@'%' IDENTIFIED BY ...;
GRANT SELECT, LOCK TABLES ON `mysql`.* TO 'dump'@'%';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `myschema`.* TO 'dump'@'%';

で、もし VIEW で関数を実行する場合、残念ながら EXECUTE .

私自身の問題は、なぜ SELECT が必要なのでしょうか?