権限管理権限の付与権限の付与は、GRANT文により行う。
GRANT 付与する権限の種類[(カラムリスト)] [,付与する権限の種類[(カラムリスト) …]
ON データベース名.テーブル名
TO ユーザー名@ホスト名 [,ユーザー名@ホスト名 …]
[IDENTIFIED BY [パスワード]]
[WITH [GRANT_OPTION | MAX_QUERIES_PER_HOUR # |
MAX_UPDATES_PER_HOUR # |
MAX_CONNECTIONS_PER_HOUR #]]
MySQLの権限は以下のレベルに分けられている。 グローバルレベル全てのデータベースに権限が付与される。 GRANT ALL ON *.* TO user1@localhost IDENTIFIED BY 'pass1'; データベースレベル指定したデータベースの全てのテーブルに権限が付与される。 GRANT ALL ON `demo\_db`.* TO user2@localhost IDENTIFIED BY 'pass2'; テーブルレベル指定したテーブルの全てのカラムに権限が付与される。 GRANT ALL ON `demo\_db`.address TO user3@localhost IDENTIFIED BY 'pass3'; カラムレベル1つのカラムに権限が付与される。 GRANT SELECT(pref, city),UPDATE(pref, city) ON `demo\_db`.address TO user4@localhost IDENTIFIED BY 'pass4';
権限の取り消し取り消しはREVOKE文を使用する。構文は以下のとおり。
REVOKE 取消する権限の種類[(カラムリスト)] [,取消する権限の種類[(カラムリスト) …]
ON データベース名.テーブル名
FROM ユーザー名@ホスト名 [,ユーザー名@ホスト名 …]
設定可能権限一覧GRANT、REVOKE文で指定可能な権限と設定可能レベルの一覧を以下に示す。
権限の再付与
WITH GRANT OPTION句を付けると、そのユーザーは他のユーザーに権限を付与できるようになる。 GRANT SELECT ON *.* TO user1 IDENTIFIED BY 'pass1' WITH GRANT OPTION; ユーザーリソースの制限個別のユーザー毎に以下のリソースに対して制限ができる。
GRANT ... WITH MAX_QUERIES_PER_HOUR # <-- 時間単位の全クエリ数(1ユーザが実行できるクエリ)
MAX_UPDATES_PER_HOUR # <-- 時間単位の全更新数(テーブルまたはデータベースを変更するクエリ)
MAX_CONNECTIONS_PER_HOUR # <-- 時間単位の接続数(1時間に新しく開かれる接続)
例えば以下のようにして、1時間に500回のSQL実行(UPDATEも含まれる)・100回の更新・10回までの接続に制限される
GRANT ALL ON *.* TO user1 IDENTIFIED BY 'pass1'
WITH MAX_QUERIES_PER_HOUR 500
MAX_UPDATES_PER_HOUR 100
MAX_CONNECTIONS_PER_HOUR 10;
おすすめ書籍
|