しょっちゅう忘れるのでメモ。
mysqlに切り替え
USE mysql
登録されているユーザを確認
SELECT user, host FROM user;
権限を表示
SHOW GRANTS for 'hoge'@'%';
ユーザを作成
CREATE USER user_name;
CREATE USER user_name IDENTIFIED BY [PASSWORD] 'password';
※ユーザ指定の書式例
user_name@host_name
※ワイルドカードをホストに使うときはシングルクォートでくくる
user_name@'%'
'username'@'192.168.128.%'
権限付与
GRANT ALL PRIVILEGES ON `DB名`.テーブル TO 'ユーザ名'@'ホスト名';
GRANT SELECT,UPDATE,INSERT,DELETE ON `DB名`.テーブル TO 'ユーザ名'@'ホスト名';
など
権限の反映
FLUSH PRIVILEGES;
※ご指摘いただき、公式ドキュメントを確認したところ、下記のような記載がありましたので、
この手順で権限を付与した場合、FLUSH PRIVILEGES;
は実行する必要が無いようです。
GRANT, REVOKE, or SET PASSWORD などのステートメントを使用して、間接的に権限テーブルを変更する場合は、サーバがこれらの変更を認識し、その変更があった直後に権限テーブルをメモリへリロードします。
INSERT、UPDATE、DELETE などのステートメントを使用して、直接に権限テーブルを変更する場合は、サーバを再起動するか、またはテーブルのリロードを行なうまでその権限チェックは施行しません。手動で権限テーブルをリロードするには、FLUSH PRIVILEGES ステートメントを発行するか、mysqladmin flush-privileges または mysqladmin reload コマンドを実行します。