はじめに
以前、家計簿管理システムの話をしたが、今回はそのシステムの DB 周りの権限を適切に設定した話である。
現在の設定
現在 API から DB に接続しているユーザーは midas であり、そのユーザーはデータベース midas の全権限を持っている。でも実際に必要としているのは、SELECT と INSERT のみである(あくまでも現時点では)。
また、DB から NAS にバックアップしているユーザーは root である。おかしい話だ。しかもバックアップをとるシェル内にパスワードを生で書いている。もうひどい。どっかの (3+4)pay のことが笑えない。
ちゃんと設定してあげる
今回準備するユーザーは下記の通り
- midas
- データベース midas 配下の全権限と権限付与ができるユーザー
- いわば データベース midas の root ユーザー
- midas_api
- API から DB に接続するユーザー
- データベース midas 配下の全てのテーブルに対しての SELECT と INSERT ができる
- midas_backup
- バックアップ取得用のユーザー
- データベース midas 配下の全てのテーブルに対して SELECT のみできる
設定したときのコマンド
- midas ユーザーにデータベース midas に
GRANT OPTION
権限を付与
GRANT GRANT OPTION ON midas.* TO midas@localhost;
- midas_api ユーザーと midas_backup ユーザーの作成
CREATE USER midas_api@localhost IDENTIFIED BY 'hitonookanede';
CREATE USER midas_backup@localhost IDENTIFIED BY 'yakinikutabetai';
- midas_api ユーザーに SELECT と INSERT 権限を付与
GRANT SELECT, INSERT ON midas.* TO midas_api@localhost;
- midas_backup ユーザーに SELECT 権限を付与
GRANT SELECT ON midas.* TO midas_backup@localhost;
最後に
権限周りはちゃんとしておくことで事故が防げると思っているので、今回対応できてよかった。