• 投稿日:2023年06月09日 10時48分35秒
  • 更新日:2023年06月09日 10時48分35秒
MySQLでバックアップとリストア

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 < [出力先ファイル名]

最後に

バックアップとリストアは急に必要になりますよね。細かなオプションも覚えていると便利ですが、とりあえずデータベースを指定出来ればいいかなって思います。

ほな、また

SPECIAL THANKS

  1. mysqlバックアップの取り方 -Qiita-
  2. MySQLDump で tablespaces の PROCESS privilege エラーが出だした時の対処方法 -Qiita-
  3. 6.2.1 MySQL で提供される権限 -MySQL-
  4. MysqldumpでPROCESS権限(PROCESS Privilege)を要求される -いっさいがっさい プログラマブル弁理士のブログ-
Laravel Sailでサクッと環境構築
MySQLでよく使うSQL-ユーザ関係-
MySQLでバックアップとリストア
UbuntuにNginx, MySQL, php をインストールする
Ubuntuに古いphp7.1をインストールする
【MySQL】ユーザに権限を付与する
【MySQL】dumpファイルを指定してインポートする
ある日を起点に直近〇曜日の日付を取得する