公式サイトには、最低限SELECT, SHOW VIEW, TRIGGER, LOCK TABLESが必要と記載されています。
しかし特定のInnoDBデータベースをmysqldumpする場合、最低限SELECT権限だけで対応できます。
| MySQL権限 | 解説 |
|---|---|
SHOW VIEW |
対象データベースにビューがなければOK |
TRIGGER |
対象データベースにトリガーがなければOK 存在してもdump不要なら --skip-triggersオプションでOK |
LOCK TABLES |
対象データベースがInnoDBなら--single-transactionオプションでOK |
コマンド例
mysqldump -uyouruser yourdatabase --single-transaction
そのほかに必要なオプションは適宜追加してください。
(追加権限が必要なオプションもあります)
サーバにある全てのデータベースをdumpしたい
追加でロック権限が必要です。MySQL 5.6まではSYSTEM系データベースはMyISAMなので。
SYSTEM系データベースの整合性を保証しなくてよいならロック不要のようです。
ビュー定義は必要ないが、ビューを含むデータベースをdumpしたい
ビューはテーブルに近い扱いなので--ignore-table=table1.viewname1 --ignore-table=table2.viewname2
というオプションで無視する方法があります。