- 投稿日:2023年06月09日 10時48分35秒
- 更新日:2023年06月09日 10時48分35秒

MySQLでバックアップとリストア
詳細
バックアップ
特定のデータベースのみバックアップする
mysqldump --single-transaction -u [DBユーザ名] -p [DB名] > [出力先ファイル名]
全てのデータベースをバックアップする
mysqldump --single-transaction -u [DBユーザ名] -p -x --all-databases > [出力ファイル名]
エラー: ユーザにPROCESS権限がない
mysqldumpコマンドを実行したとき、以下エラーが発生することがあります。
mysqldump: Error: ‘Access denied; you need (at least one of) the PROCESS privilege(s) for this operation’ when trying to dump tablespaces
実際のエラー文
mysqldump:エラー: ‘アクセスが拒否されました。表領域をダンプしようとするときは、この操作にPROCESS特権(少なくとも1つ)が必要です。
Google翻訳した結果
これはmysqldumpコマンドを実行する[DBユーザ名]にPROCESS権限がないことが原因です。PROCESS権限とはデータベース側で作成したファイルなどを触るために必要な権限です。
PROCESS 権限は、サーバー内で実行するスレッドについての情報の表示に関係します (つまり、セッションによって実行されるステートメントについての情報)。この権限は、SHOW PROCESSLIST または mysqladmin processlist を使用して、ほかのアカウントに属するスレッドを表示することを可能にし、自分自身のスレッドを表示することもできます。PROCESS 権限は、SHOW ENGINE の使用も可能にします。
PROCESS 権限は、パスワードの設定や変更を行うステートメントなどを含め、現在実行中のステートメントのプレーンテキストを表示することができます。
By MySQL Documentation
解決方法としては[DBユーザ名]にPROCESS権限を持たせます。
GRANT PROCESS ON *.* TO '[DBユーザ名]';
ただし権限を本当に持たせていいのか判断をしっかりするようにしましょう。
リストア(復元)
特定のデータベースのみ復元する
mysql -u [DBユーザ名] -p [DB名] < [出力先ファイル名]
全てのデータベースをリストアする
mysql -u [DBユーザ名] -p < [出力先ファイル名]
最後に
バックアップとリストアは急に必要になりますよね。細かなオプションも覚えていると便利ですが、とりあえずデータベースを指定出来ればいいかなって思います。
ほな、また