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

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

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';

で権限を付ける。your-userはコマンドで指定するMySQLのユーザー。

当初、ダンプ対象のテーブルスペースだけに付与 ( 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を実行することでも、エラーを回避できるとのこと。

参考情報