AR ホームベーカリー

オイラのアウトプット用ホームベーカリー!

MySQL8 時代の GRANT

GRANT ALL PRIVILEGES ON example_database.* TO example_user@localhost IDENTIFIED BY 'password'; 
FLUSH PRIVILEGES;

長らくこの MySQL 5.x 世代の「ユーザ作成と同時に権限も設定する」というヤツになれすぎて、 MySQL8 世代のユーザ作ってから GRANT しろ、というやつが思い出せない。 おじいちゃんすぎる。

CREATE USER example_user@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON example_database.* TO example_user@localhost;
FLUSH PRIVILEGES;

ただのチラシの裏

近頃はやれマイクロサービスだ疎結合だ、HTTP ヘッダは最低限にしろ、などといって色々分解したがるけど、コードがデータベースに求める権限は ALL PRIVILEGES を期待して実装されている気がしてならない。 これは利用するフレームワークの ORM 仕様や、周辺エコシステムなんかの恩恵をカジュアルに受けようと思ったらそうならざるを得ないのはそうなんだけども。

SELECT, INSERT, UPDATE, DELETE あたりで絞ってしまうと、デプロイ時にこけがちで「そんなんじゃ甘いよ」みたいなことを実装と作業者両方から言われたりするパターンに遭遇する。 辛い。