タダです.
Aurora Serveless V2 で管理者ユーザーと同等の権限を持つ DB ユーザーを作りたいと思い, GRANT ALL PRIVILEGES
でユーザーに権限を付与しようとしたら実行ができないことを知りました.この記事ではどのように対応したのかをまとめます.
事象の概要
Aurora Serveless V2 に管理者ユーザーと同等のユーザー(今回は blog
というユーザー)を作りたいと思ったが,GRANT ALL PRIVILEGES
を実行したら下記のエラーがでました.AWS の解説ページでも GRANT ALL PRIVILEGES
が紹介されておらず管理者ユーザーの権限を確認して同じ権限を振るという案内がされています.
> GRANT ALL PRIVILEGES ON *.* TO 'blog'@'%'; ERROR 1045 (28000): Access denied for user 'admin'@'%' (using password: YES)
管理者ユーザーの権限を確認する
そこで管理者ユーザーの権限を参照してから付与してみることにしました.すると,rds_superuser_role
という見たことない権限が与えられていました.
> SHOW GRANTS for 'admin'@'%'; +-----------------------------------------------+ | Grants for admin@% | +-----------------------------------------------+ | GRANT USAGE ON *.* TO `admin`@`%` | | GRANT `rds_superuser_role`@`%` TO `admin`@`%` | +-----------------------------------------------+ 2 rows in set (0.00 sec)
調べてみたところ,Aurora MySQL バージョン3 では rds_superuser_role
が特別なロールとして作られておりそれが管理者ユーザーに設定されていました.
ドキュメント引用文(クリックすると表示されます)
Aurora MySQL バージョン 3 には、以下のすべての権限を持つ特別なロールが含まれています。ロールの名前は rds_superuser_role です
ALTER
APPLICATION_PASSWORD_ADMIN
ALTER ROUTINE
CONNECTION_ADMIN
CREATE
CREATE ROLE
CREATE ROUTINE
CREATE TABLESPACE
CREATE TEMPORARY TABLES
CREATE USER
CREATE VIEW
DELETE
DROP ROLE
EVENT
EXECUTE
INDEX
INSERT
LOCK TABLES
PROCESS
REFERENCES
RELOAD
REPLICATION CLIENT
REPLICATION SLAVE
ROLE_ADMIN
SET_USER_ID
SELECT
SHOW DATABASES
SHOW VIEW
TRIGGER
UPDATE
XA_RECOVER_ADMIN
てことであれば,この権限を振ってあげればいいと思い,その設定を行いましたところロールを割り当てられることができました.
> GRANT 'rds_superuser_role' TO 'blog'@'%'; Query OK, 0 rows affected (0.05 sec) > SHOW GRANTS for 'blog'@'%'; +----------------------------------------------+ | Grants for blog@% | +----------------------------------------------+ | GRANT USAGE ON *.* TO `blog`@`%` | | GRANT `rds_superuser_role`@`%` TO `blog`@`%` | +----------------------------------------------+ 2 rows in set (0.00 sec)
まとめ
MySQL バージョン8.0 の Aurora 環境での管理者ユーザーと同等の権限を割り振ろうとしてみた時に調べたことと試したことをまとめました.8.0 の環境を使う機会は今後増えそうなので初めて遭遇したことは生理として記事に残りしていければと思います.