🔥
Cloud SQL上のMySQLでGRANT ALL ON *.*が使えない
事象
Google CloudのCloud SQLでMySQL 5.7を使っていましたが、拡張サポートにより費用が2倍程度高くなりそうでしたので、MySQL 8.0にアップグレードしました。
MySQL 8.0にアップグレード後GRANT ALL ON *.* 'ユーザー名'
でユーザーに全権限を付与しようとしましたが、エラーになりはじかれてしまいました。
原因
Cloud SQL上のMySQL 8.0ではpartial_revokesというシステムフラグが有効になっています。そのため、データベースを指定する際のワイルドカードの使用に制限がかかっておりエラーになりました。なお、システムフラグのため変更できません。
参考: MySQL 8.0 以降の partial_revokes システムフラグ
解決策
以下どちらかのクエリを実行するしかなさそうです。
-
GRANT ALL ON データベース名.* 'ユーザー名';
- ワイルドカード(*)ではなく、データベースを明示的に指定します。
GRANT cloudsqlsuperuser TO 'ユーザー名';
Discussion