GRANT構文

GRANT構文について

GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
    ON {テーブル名 | * | *.* | データベース名.*}
    TO ユーザID [IDENTIFIED BY 'パスワード']
                [, ユーザID [IDENTIFIED BY 'パスワード'] ...]
    [REQUIRE
        [{SSL| X509}]
        [CIPHER cipher [AND]]
        [ISSUER issuer [AND]]
        [SUBJECT subject]
    ]
    [WITH GRANT OPTION]

GRANT構文のpriv_typeには、次のようなものがあります。

GRANT構文のpriv_typeについて

ALL [PRIVILEGES]すべての権限。(ALLと同義語)
ALTERALTER TABLE構文が実行できる権限。
CREATEデータベースとテーブルの作成が行える権限。
DROPデータベースとテーブルの削除が行える権限。
FILELOAD DATA構文とSELECT 〜 INTO OUTFILE構文を実行できる権限。
PROCESSmysqladminコマンドのprocesslistとkill命令を実行できる権限。
RELOADmysqladminコマンドのreload、refresh、flush-privileges、
flush-hosts、flush-logs、flush-tables命令を実行できる権限。
SHUTDOWNmysqladminコマンドのshutdown命令を実行できる権限。
  
DELETEDELETE構文を実行できる権限。
INSERTINSERT構文を実行できる権限。
SELECTSELECT構文を実行できる権限。
UPDATEUPDATE構文を実行できる権限。
  
INDEXインデックスの作成と削除が行える権限。
REFERENCESテーブルのリファレンスが参照できる権限。
USAGEすべての権限がない。("no privileges"と同義)

上から8つは通常のデータ操作以上の権限を与えるので、十分な検討が必要です。

WITH GRANT OPTIONは、作成したユーザーにGRANT構文の実行権限を与えます。 ただし、自分自身が持っていない権限を与えることはできません。

ユーザー作成例

例1.localhostからのみ接続可能な全ての権限を持つユーザーの作成

GRANT ALL ON データベース名.* TO ユーザー名@localhost IDENTIFIED BY 'パスワード';

例2.どのホストからでも接続可能な全ての権限を持つユーザーの作成

GRANT ALL ON データベース名.* TO ユーザー名@"%" IDENTIFIED BY 'パスワード';

例3.localhostからのみ接続可能なオブジェクト権限を持つユーザーの作成

GRANT SELECT,INSERT,UPDATE,DELETE ON データベース名.* TO ユーザー名@localhost
      IDENTIFIED BY 'パスワード';
[an error occurred while processing this directive]