何が起きたか
弊社で秘伝のたれのように使っていた新人向け設定の内、DBアカウントを作る以下の手順が失敗した。
手順
CREATE USER 'name.name'@'%' IDENTIFIED BY '********************';
GRANT SELECT,SHOW DATABASES, PROCESS, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'name.name'@'%';
失敗しました
RDSのマスターユーザで作業しましたがこのエラーが出ました。
SQLエラー[1410][42000]: You are not allowed to create a user with GRANT
解決策
最近はロールを使った権限付与に変わったそうです。ロールをGRANTすることで同様の作業ができました。
ちなみに、ちゃんとロールは独自で作ったほうがいいと思います。
-- ユーザ作成。パスワードは適当な文字列を設定する
CREATE USER 'name.name'@'%' IDENTIFIED BY '*********************';
-- 権限割り当て
GRANT 'rds_superuser_role'@`%` TO `name.name`@`%`;
-- 反映
SET DEFAULT ROLE 'rds_superuser_role' TO 'name.name'@'%';
-- 確認
show grants for `name.name`@`%` using 'rds_superuser_role';
参考