さくらのレンタルサーバーで、MySQLのDBバックアップで、毎回、エラーが出るようになりました。
解決方法が分かりましたので、備忘録の意味も兼ねてまとめました。
目次
発生したエラー
さくらのレンタルサーバーで、cronによりMySQLのバックアップ処理を日次で行っていたところ、下記のエラーが出るようになりました。
mysqldump: Error: ‘Access denied; you need (at least one of) the PROCESS privilege(s) for this operation’ when trying to dump tablespaces
突然、エラーが出るようになりまして、100%の確率で発生しています。
訳すと以下の通りとなります。
MySQLダンプ:エラー:アクセスが拒否されました。表領域をダンプしようとするときは、この操作には(少なくとも1つの)PROCESS特権が必要です。
「Access denied(アクセス距離)」「need(必要)」「privilege(権限)」といったき刺激的な言葉が並んでいますが、DBバックアップ自体は正常に行えています。
筆者の環境ではエラー内容がメールで送られてきますので、毎回、送信されてきて煩わしいのですが、気にしないのであれば、不都合はありません。
エラーが発生する要因
エラーが発生するようになったのは、MySQLのバージョンを5.7にアップグレードしてからです。
筆者はさくらのレンタルサーバーで、複数台利用していて、MySQLのDBは合計で10ヶほど利用しています。
バージョンアップを行ったところでは、全てでこのエラーが出ていますので、MySQLを5.7にアップグレードしたことが影響していることは間違いありません。
解決方法
mysqldump コマンドに「-no-tablespaces」オプションを加えるだけです。
これでエラーが100%出なくなりましたし、同様の事例を調べてみると、同じ方法で解決している報告事例が多数見つかります。
<修正前>
mysqldump -q –host=[ホスト名] –user=[ユーザーID] –password=[DBパスワード] [DB名]> $DBDUMP_FILE
<修正後>
mysqldump -q –host=[ホスト名 –user=[ユーザーID] –password=[DBパスワード] [DB名] –no-tablespaces> $DBDUMP_FILE
–no-tablespaces オプションとは?
「–no-tablespaces」って何?と気になったかたもいると思います。
–no-tablespaces | CREATE LOGFILE GROUP ステートメントおよび CREATE TABLESPACE ステートメントを出力に書き出さない |
オプションの意味を調べてみましたが、意味が良く分かりませんでした。
筆者とは関係のないことのようなので、これ以上は調べませんでしたが、興味がある方は、ログファイルグループとテーブルスペースについて調べてみてください。