85

次のパーマを持つdumpという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

トリガーを除いて、ダンプされたファイルはすべて問題ありません。トリガーがありません。

ルートMySQLユーザーでmysqldumpを試してみると、トリガーは正しくダンプされます。

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

だから、それはパーマの問題だと思います...フルダンプを正しく行うために私のダンプMySQLユーザーが必要とする追加の許可は何ですか?

4

4 に答える 4

116

フルダンプとは、VIEWsとsも意味すると仮定するとEVENT、次のものが必要になります。

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'@'%';

関数を実行するsがある場合はVIEW、残念ながらも必要EXECUTEです。

SELECT私自身の問題は、データなしのダンプを作成したいだけなのに、なぜ必要なのかということです。

于 2013-08-21T08:22:51.137 に答える
8

必要な追加のGRANTを見つけました!!

  GRANT TRIGGER ON `myschema`.* TO 'dump'@'%'

ここに公式ドキュメントのリファレンスがあります:http://dev.mysql.com/doc/refman/5.5/en/privileges-provided.html#priv_trigger

TRIGGER特権は、トリガー操作を有効にします。テーブルがそのテーブルのトリガーを作成、削除、または実行するには、この特権が必要です。

于 2011-12-29T12:15:57.283 に答える
1

VIEW DEFINERユーザーが存在しない場合、ダンプが失敗することがあります。

そこに記載されているように、それを変更します

于 2016-07-06T08:06:58.757 に答える
1

Jannesの回答に加えて、 -tabオプションを指定してmysqldumpを使用する場合(ダンプされたテーブルごとにタブ区切りのテキストファイルを生成する)、MySQLユーザーにも特権を 付与する必要があります。FILE

GRANT FILE ON *.* TO 'dump'@'%';

公式ドキュメントリファレンス:https ://dev.mysql.com/doc/refman/5.7/en/mysqldump.html#option_mysqldump_tab

このセクションで言及:

このオプションは、mysqldumpがmysqldサーバーと同じマシンで実行されている場合にのみ使用する必要があります。サーバーは指定したディレクトリに*.txtファイルを作成するため、ディレクトリはサーバーによって書き込み可能である必要があり、使用するMySQLアカウントにはFILE権限が必要です。mysqldumpは同じディレクトリに*.sqlを作成するため、システムログインアカウントで書き込み可能である必要があります。

于 2019-02-07T15:56:25.500 に答える