さるへい備忘録

さるへいのやったことを綴っているブログです。基本的にテクノロジーの話題です。

MySQLの権限設定のやりかた、RDSの場合の特別な設定も

MySQLの権限設定で困ったのでメモ。 RDSだとちょっと使えない文字列があるので注意です

普通にGRANT設定するだけ

GRANT SELECT,INSERT,UPDATE,DELETE ON `DB名`.* TO `ユーザ名`@* IDENTIFIED BY 'パスワード';

上記のSELECTやINSERTのところに許可したい権限を入れるだけですね。
ALTER文やCREATE文を発行するような場合は上記だけだと駄目なので注意しましょう。
マイグレーションアクセスでもない限り上記でだいたい大丈夫でしょうね。

RDSでGRANT設定

RDSだと実は前述のままだとエラーを吐きます。
なぜなら、 *ワイルドカードが利用できないからになります。

GRANT SELECT,INSERT,UPDATE,DELETE ON `DB名`.* TO `ユーザ名`@`%` IDENTIFIED BY 'パスワード';

上記のように、 % で代替できます。 % はどのホストからでも接続できるという意味になります。
* だと localhost も接続できるというのでセキュリティ上の都合でしょうか? まぁそれだったら % 許すなよって気もしますね。

また、サーバのIPやhostが特定できる場合はちゃんとhostの箇所は固定設定しましょう。