schedule2019-07-12

RDS MySQLでマスターユーザーを追加する

RDSでないMySQLのユーザー追加方法と同じようにマスターユーザーを追加しようとすると「権限がない」とエラーが出た。 ドキュメントによるとマスターユーザーは 1 つだけしか登録できない。 そこで、マスターユーザーと同等の権限のユーザーを作成する。

手順はドキュメントと同じですので、そちらを参照された方が良いです。

環境

  • AWS RDS
  • MySQL 5.7

設定時にマスターユーザー名をmaster_userとしています。

GRANT ALL PRIVILEGESでマスターユーザーを追加

RDSのMySQLではALL PRIVILEGESの権限をユーザーに付与させようとするとエラーが出ました。

mysql> CREATE USER 'master_user2'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.03 sec)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'master_user2'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
ERROR 1045 (28000): Access denied for user 'master_user'@'%' (using password: YES)

マスターと同等のユーザーを追加する

ALL PRIVILEGESでは追加できませんが、ひとつひとつの権限を全て有効にしてあげればマスターと同等のユーザーにすることができます。

  • ユーザー名 : master_user2
  • パスワード : password
  • ホスト : % ※ワイルドカードです。 のユーザーを追加しようとしています。
mysql> CREATE USER 'master_user2'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.06 sec)

mysql> 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 'master_user2'@'%' WITH GRANT OPTION;
Query OK, 0 rows affected (0.06 sec)

権限の確認

ユーザーの権限の確認方法です。

mysql> SHOW GRANTS FOR 'master_user2';
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for master_user2@%
                                                                                                                           |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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 'master_user2'@'%' WITH GRANT OPTION |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.04 sec)

ユーザー削除

mysql> DROP USER 'master_user2'@'%';

参考

AWSの公式ドキュメント

権限の種類についてはこちらがわかりやすいです。