GRANT構文とは
GRANT ステートメントは、MySQL ユーザーアカウントに権限を付与します。GRANT にはまた、セキュア接続の使用やサーバーリソースへのアクセスに関する制限などの、その他のアカウント特性を指定する機能もあります。GRANT を使用するには、GRANT OPTION 権限が必要であり、かつ付与しようとしている権限を持っている必要があります。
引用:https://dev.mysql.com/doc/refman/5.6/ja/grant.html
GRANT構文は権限を付与したり、制限の操作が行える構文です。
セキュア接続というのは、HTTPS接続の事です。
HTTPSが分からない方はこちらを参照してください。
例
GRANT ALL ON *.* TO 'test'@'localhost';
この構文を例に解説します。
GRANT
これはGRANT構文を使用する、という宣言です。
ALL
今回の例からいうとグローバル権限を対象とする全ての権限を指します。
テーブルレベル、データベースレベルでALLを指定する事も可能です。
テーブルレベルでのALLの場合構文は下記のようになります。
GRANT ALL ON mydb.mytbl TO 'test'@'localhost';
例に挙げた構文との違いは、ON
の後です。
DB_name.Table_name
の形になります。
データベースレベルでのALLの場合、構文は下記のようになります。
GRANT ALL ON mydb.* TO 'test'@'localhost';
こちらも同様に例に挙げた構文との違いは、ON
の後です。
DB_name.*
の形になります。
ON .
グローバル権限を割り当てる時に使用します。
特定のサーバー上のすべてのデータベースが対象となります。
TO 'test'@'localhost'
どのユーザーで、どのホストなのか、を指定します。
例文では、test
ユーザーで、localhost
を指定しています。
ちなみに、''
シングルクォーテーションで囲む必要は基本的にありません。
シングルクォーテーションで囲む必要があるのは、例えば特殊文字のハイフン-
が入っている場合です。
SHOW GRANTS構文
どのような権限が付与されているか、を確認する事が出来る構文です。
現在の状態や、権限付与後に確認する時は、この構文を使います。
SHOW GRANTS [FOR user];
// [FOR user] → 'test'@'localhost'など
- SHOW GRANTS;
- SHOW GRANTS FOR CURRENT_USER;
- SHOW GRANTS FOR CURRENT_USER();
上記3つのいずれかを使用する事で、現在接続されているアカウントの権限を確認することが出来ます。
参考
https://dev.mysql.com/doc/refman/5.6/ja/grant.html#grant-other-characteristics
https://dev.mysql.com/doc/refman/5.6/ja/show-grants.html
https://dev.mysql.com/doc/refman/5.6/ja/privileges-provided.html