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の箇所は固定設定しましょう。