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の公式ドキュメント
権限の種類についてはこちらがわかりやすいです。
MySQL server has gone awayがmax_allowed_packetを変更して解決した
MySQLschedule2020-03-11