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 について:
priv_type | 概要 |
---|---|
ALL [PRIVILEGES] | すべての権限。(ALLと同義語) |
ALTER | ALTER TABLE構文が実行できる権限。 |
CREATE | データベースとテーブルの作成が行える権限。 |
DROP | データベースとテーブルの削除が行える権限。 |
FILE | LOAD DATA構文とSELECT ~ INTO OUTFILE構文を実行できる権限。 |
PROCESS | mysqladminコマンドのprocesslistとkill命令を実行できる権限。 |
RELOAD | mysqladminコマンドのreload、refresh、flush-privileges、flush-hosts、flush-logs、flush-tables命令を実行できる権限。 |
SHUTDOWN | mysqladminコマンドのshutdown命令を実行できる権限。 |
DELETE | DELETE構文を実行できる権限。 |
INSERT | INSERT構文を実行できる権限。 |
SELECT | SELECT構文を実行できる権限。 |
UPDATE | UPDATE構文を実行できる権限。 |
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 'パスワード';