MySQLユーザー作成〜権限付与まで


はじめに

MySQLインストール後、ユーザー作成から権限付与までをよく忘れるので記載します。

実行環境

OS:CentOS7
MySQLバージョン:5.6・5.7

ユーザー作成

mysql -u rootでrootでMySQLコマンドラインに入る。
※パスワード設定済みであれば「-p」オプションを追加。

mysql> CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';

usernamehostnameは、必ずしも引用符で囲む必要はないよう。
ただ、特殊文字やワイルドカード文字 (「%」など) を含む場合には引用符が必要なため、password含めて3点セットで囲んでおくのが無難な気はします。

権限付与

作成したユーザーに権限を付与する。付与する権限とそのレベルによって構文が変わります。

1.グローバル権限

特定のサーバー上の全てのデータベースに適用される。GRANT ○○ ON *.* TO構文を利用。
サンプルのALLSELECTINSERTの部分は付与したい権限に応じて変更します。

サンプル
mysql> GRANT ALL ON *.* TO 'username'@'hostname';
mysql> GRANT SELECT, INSERT ON *.* TO 'username'@'hostname';

2.データベース権限

特定のデータベース内のすべてのオブジェクトに適用。GRANT ○○ ON db_name.* TO構文を利用。

サンプル
mysql> GRANT ALL ON db_name.* TO 'username'@'hostname';
mysql> GRANT SELECT, INSERT ON db_name.* TO 'username'@'hostname';

3.テーブル権限

DB内の特定のテーブルのカラム全てに適用。GRANT ○○ ON db_name.tbl_name TO構文を利用。

サンプル
mysql> GRANT ALL ON db_name.tbl_name TO 'username'@'hostname';
mysql> GRANT SELECT, INSERT ON db_name.tbl_name TO 'username'@'hostname';

4.カラム権限
特定テーブル内の単一カラムに適用。各権限のあとに、括弧で囲まれた1つ以上のカラムを指定する。
構文はGRANT ○○ (col1), ○○ (col1, col2) ON db_name.tbl_name TOのようになる。

サンプル
mysql> GRANT SELECT (col1), INSERT (col1,col2) ON db_name.tbl_name TO 'username'@'hostname';

権限付与結果の確認

以下で登録されたユーザーおよび権限設定を確認する

ユーザー確認
mysql> select user, host from mysql.user;
権限確認
mysql> show grants for 'username'@'hostname'

最後に

いまいちな理解の部分もあったのですが公式を参照したらちゃんと書いてありました。
やはり公式をしっかりと見るのが大事なようです。

参考ページ

https://dev.mysql.com/doc/refman/5.6/ja/grant.html#grant-global-privileges
https://qiita.com/shuntaro_tamura/items/2fb114b8c5d1384648aa