EC-CUBE3 EC-CUBE4

レンタルサーバーに設置したEC-CUBEやWordPressのデータベースをmysqldumpでバックアップしようとすると、次のエラーで止まることがあります。

Error: 'Access denied; you need (at least one of) the PROCESS privilege(s) for this operation' when trying to dump tablespaces

原因 — mysqldumpの仕様変更でPROCESS権限が必要になった

MySQL 5.7.31および8.0.21以降、mysqldumpはテーブルスペース情報の取得にPROCESS権限を要求する仕様に変わりました。

PROCESS権限はサーバー上の全セッションの状態が見える強い権限のため、レンタルサーバーの共用MySQLでは一般ユーザーに付与されていないのが普通です。そのため、以前は動いていたバックアップコマンドが、サーバー側のMySQLバージョンアップを境に突然このエラーで失敗するようになります。

対処 — –no-tablespacesオプションを付ける

テーブルスペース情報は、通常のEC-CUBEやWordPressのバックアップ・復元には不要です。–no-tablespacesオプションを付けて、テーブルスペース情報の取得自体をスキップすれば解決します。

mysqldump -u ユーザー名 -p --no-tablespaces --single-transaction データベース名 > backup.sql

–single-transactionは、ダンプ中のデータ不整合を防ぐためのオプションです(InnoDBの場合)。あわせて付けておくことをおすすめします。

cronで定期バックアップを組んでいる場合は、スクリプト内のmysqldumpコマンドにも–no-tablespacesを追記してください。サーバー側のMySQLが更新されたタイミングで、気づかないうちに定期バックアップが失敗し続けていた、というケースが実際にあります。バックアップが取れているかの確認も含めた手順は、次の記事にまとめています。

EC-CUBEのバックアップと復元の手順(自動化まで)

権限を付与できる環境の場合

VPSや専用サーバーなどMySQLの管理権限がある環境であれば、ユーザーにPROCESS権限を付与する方法もあります。

GRANT PROCESS ON *.* TO 'ユーザー名'@'ホスト';

PROCESS権限はデータベース単位ではなくグローバルにしか付与できない点に注意してください。バックアップ用途であれば、権限を増やすより–no-tablespacesで回避する方が安全です。

日本発!ECオープンプラットフォーム「EC-CUBE」 EC-CUBEゴールドパートナー EC-CUBEは株式会社イーシーキューブの商標です

EC-CUBEに関するお問い合わせ


    [重要]現在公式にセキュリティサポートが切れていないPHPは8.1以上、MySQLは8.0以上で、対応しているEC-CUBEバージョンは4.2以上です。古いEC-CUBEを使っている方は適切なタイミングでバージョンアップをご検討ください。

    EC-CUBEバージョンアップ