AWS RDSのMariaDBでGRANT ALLコマンドがエラーになる

投稿者: | 2020-08-05

今回はAWS RDSのMariaDBでGRANT ALLコマンドの権限付与時にエラーメッセージが表示され権限を付与できない件について説明します。

実施環境

接続元ホスト AWS EC2 (IPアドレス:54.178.57.138)
データベースサービス AWS RDS
エンジンタイプ MariaDB 10.4.8

発生した事象について

EC2+RDS(MariaDB)の構成でWordPressを導入するため、EC2からRDSに接続し、マスターユーザーでデータベースの作成と権限の付与を行おうとしたところ、GRANT ALLコマンドで以下の内容のエラーが発生しました。

・WordPress用のDBに全ての権限を付与する
MariaDB [wordpress]> GRANT ALL ON wordpress.* TO 'wordpress'@'54.178.57.138';
ERROR 1044 (42000): Access denied for user 'admin'@'%' to database 'wordpress' 

エラーメッセージはRDSのマスターユーザー・adminのデータベースへのアクセスが拒否されたという内容です。

GRANT ALLは上記のエラーメッセージが表示されますが、以下のようにGRANTの権限を単体で付与すると問題なく付与できます。

・WordPress用のDBにSELECTの権限を付与する
MariaDB [wordpress]> GRANT SELECT ON wordpress.* TO 'wordpress'@'54.178.57.138';
Query OK, 0 rows affected (0.00 sec)

マスターユーザーの権限を確認

初めにエラーメッセージの通りマスターユーザーのGRANT権限を確認します。今回はマスターユーザーをadminとしますが、ユーザー名部分は各自の環境に合わせてください。

・マスターユーザーのGRANT権限を確認
MariaDB [wordpress]> SHOW GRANTS FOR 'admin'@'%';
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Grants for admin@%                                                                                                                                                                                                                                                                                                                                                                                 | 
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'admin'@'%' IDENTIFIED BY PASSWORD '*E668A4AF047E00BFD7DEDF4BF983CD6FB96C3056' WITH GRANT OPTION | 
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 

マスターユーザーの権限は特に問題なさそうです。

解決した方法

以下のコマンドにて、データベースへの権限を付与することができました。

・WordPress用のDBに全ての権限を付与する
MariaDB [wordpress]> GRANT SELECT, UPDATE, DELETE, INSERT, CREATE, DROP, INDEX, ALTER, LOCK TABLES, EXECUTE, CREATE TEMPORARY TABLES,TRIGGER, CREATE VIEW, SHOW VIEW, EVENT ON wordpress.* TO 'wordpress'@'54.178.57.138'; 
Query OK, 0 rows affected (0.00 sec)

単体で権限の付与ができたため、権限を全てを単体で記述するという方法です。実際に権限が付与されたかどうかを確認します。

・WordPress用のDBに全ての権限を付与する
MariaDB [wordpress]> SHOW GRANTS FOR 'wordpress'@'54.178.57.138';
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| Grants for wordpress@54.178.57.138                                                                                                                                                                       | 
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 
| GRANT USAGE ON *.* TO 'wordpress'@'54.178.57.138' IDENTIFIED BY PASSWORD '*5F3EF24E15B9895D75C034CCAECAEC3C8EF08BCC'                                                                                     | 
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, EVENT, TRIGGER ON `wordpress`.* TO 'wordpress'@'13.230.162.243' | 
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 

データベース・wordpressに対し、全ての権限を付与できていれば成功です。