mysqldumpでPROCESS権限(PROCESS privilege)を要求される

cronで定期実行していたMySQLのバックアップがエラーを吐くようになった。

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

MySQLを5.7.31にバージョンアップしたことで権限の要求が変わった感じ。PROCESS権限が必要とおっしゃっている。

解決手段

とりあえず、PROCESS権限を持たせればよさそうなので、次のコマンドでmysqldumpを実行するユーザーに権限を与える。

mysql > GRANT PROCESS ON *.* TO "your-user";

で権限を付ける。最初、ダンプ対象のテーブルスペースだけに付与(ON "your-space".*)しようとしたら、Incorrect usage of DB GRANT and GLOBAL PRIVILEGESで怒られたのでON *.*で付与する。

mysql > SHOW GRANTS FOR "your-user";
+--------------------------------------------------+
| Grants for your-user@%                           |
+--------------------------------------------------+
| GRANT PROCESS ON *.* TO 'your-user'@'%'          |
+--------------------------------------------------+

確認してこんな感じでPROCESS権限が表示されれば、エラーはでなくなる。

他の解決手段

よくよくMySQLのリリースノートを確認してみると

Incompatible Change: Access to the INFORMATION_SCHEMA.FILES table now requires the PROCESS privilege.

This change affects users of the mysqldump command, which accesses tablespace information in the FILES table, and thus now requires the PROCESS privilege as well. Users who do not need to dump tablespace information can work around this requirement by invoking mysqldump with the –no-tablespaces option. (Bug #30350829)

https://dev.mysql.com/doc/relnotes/mysql/5.7/en/news-5-7-31.html

と、ちゃんと書いてあった。

テーブルスペースの情報が必要なければ--no-tablespacesオプションを付けてmysqldumpを実行することでも、エラーを回避できるとのこと。

参考情報