GRANT文の実用的な使い方 1番良い使い方

GRANT文というのは、権限を与えるという非常に強力な命令です。もしも、間違えて権限を与えてしまってDROP DATABASE データベース名;など使われたなんてことが起こると、目も当てられません。だから、GRANT文は慎重に使い、ユーザ権限は必要なものしか与えないに限ります。
実際にサービスやアプリケーションをつくった場合に、どんな権限が必要かというと、SELECT、INSERT、UPDATE、DELETEで足ります。(DELETEはフラグで実装して、UPDATEでdelete_flag=1とする方法ならDELETE権限すらいらない)というか、他のものは与えてはいけない。勝手にテーブルを作ったり、破棄したり、定義を変えられたりしたら困ります。
さらに、1つのアプリケーションにつき、1ユーザーつくり、権限を与えることで、パスワードやユーザ名がばれてしまったときでも、他のデータベースまで被害が及ぶことが防げます。そういうセキュリティ的な面も考慮するべきです。
CREATE TABLEなどの定義はrootでログインし、ローカルで済まして置けばいいのです。
というわけで、1番実用的なGRANT文はこれだと思います。これを、各サービスごとにやるわけです。

GRANT SELECT, INSERT, UPDATE, DELETE 
ON データベース名.*
TO ユーザ名@localhost IDENTIFIED BY 'パスワード';

そして、GRANT文やREVOKE文などの権限について変更した場合は必ず次の文もうつこと。

FLUSH PRIVILEGES;

これはユーザ情報を反映させる命令です。これは決まりなので必ずすること。この文の詳しい意味はまた今度調べたいと思います。