ユーザーに設定できる権限の種類と一覧
ユーザーが MySQL に接続したあとデータベースやテーブルを作成したり、テーブルからデータを取得するにはその操作に対する権限が設定されている必要があります。ここでは MySQL における権限の種類と権限の一覧について解説します。
(Last modified: )
権限のレベル
権限は大きく分けて次の6つのレベルが用意されています。
グローバルレベル(G)
グローバルレベル権限は全てのデータベースに適用される権限です。この権限は mysql.user テーブルに格納されます。
データベースレベル(D)
データベースレベル権限は特定のデータベース内の全てのオブジェクトに適用される権限です。この権限は mysql.db テーブル内に格納されます。
テーブルレベル(T)
テーブルレベル権限は特定のテーブル内の全てのカラムに適用される権限です。この権限は mysql.tables_priv テーブル内に格納されています。
カラムレベル(C)
カラムレベル権限は特定テーブル内の単一カラムに適用される権限です。この権限は mysql.columns_priv テーブル内に格納されています。
ルーチンレベル(R)
CREATE ROUTINE 、 ALTER ROUTINE 、 EXECUTE 、そして GRANT OPTION 権限はストアドルーチンに適用される権限です。(ファンクションとプロシージャ)それらは、グロー
バルとデータベースレベルで供与されます。また、CREATE ROUTINE 以外は、これらの権限は各ルーチンに対してルーチンレベルで適用する事ができ mysql.procs_priv テーブル内に格納されます。
プロキシユーザー権限(P)
あるユーザーが別のユーザーの代理になることができます。この権限は mysql.proxies_priv テーブル内に格納されています。
グローバルレベルで権限は全てのデータベースに対する権限となります。それに対してデータベースレベルはデータベースを指定して権限を与える場合、テーブルレベルは特定のデータベースのさらに特定のテーブルに対する権限を与える場合、カラムラベルは特定のテーブルの中にある特定のカラムだけに対する権限を与える場合です。
例えば特定のデータベースにだけテーブルを作成する権限を与えたり、特定のテーブルのさらに特定のカラムの値だけを参照する権限を与えることなどができます。
権限の一覧
MySQL でユーザーに設定できる静的な権限の一覧です。
権限 | レベル | 意味 |
---|---|---|
ALL [PRIVILEGES] | GDT | GRANT OPTION と PROXY 以外の全ての権限を設定します。 |
ALTER | GDT | テーブルの変更を可能にします。 |
ALTER ROUTINE | GDR | ストアドルーチンの変更、削除を可能にします。 |
CREATE | GDT | データベース、テーブルの作成を可能にします。 |
CREATE ROLE | G | ロールの作成を可能にします。 |
CREATE ROUTINE | GD | ストアドルーチンの作成を可能にします。 |
CREATE TABLESPACE | G | テーブルスペースとロググループの作成、変更、削除を可能にします。 |
CREATE TEMPORARY TABLES | GD | CREATE TEMPORARY TABLE の使用を可能にします。 |
CREATE USER | G | CREATE USER 、 DROP USER 、 RENAME USER 、そして REVOKE ALL PRIVILEGES の使用を可能にします。 |
CREATE VIEW | GDT | ビューの作成と変更を可能にします。 |
DELETE | GDT | データベース、テーブル、ビューの削除を可能にします。 |
DROP | GDT | テーブルの削除を可能にします。 |
DROP ROLE | G | ロールの削除を可能にします。 |
EVENT | GD | イベントスケジューラがイベントの利用を可能にします。 |
EXECUTE | GDR | ユーザがストアドルーチンを起動させるのを可能にします。 |
FILE | G | SELECT ... INTO OUTFILE と LOAD DATA INFILE の使用を可能にします。 |
GRANT OPTION | GDTRP | 他のアカウントへの権限の付与とを削除を可能にします。 |
INDEX | GDT | インデックスの作成と削除を可能にします。 |
INSERT | GDTC | INSERTの使用を可能にします。 |
LOCK TABLES | GD | SELECT 権限を持つテーブル上の LOCK TABLES の使用を可能にします。 |
PROCESS | G | SHOW FULL PROCESSLIST の使用を可能にします。 |
PROXY | -- | PROXYの使用を可能にします。 |
REFERENCES | GDTC | 外部キーの作成を可能にします。 |
RELOAD | G | FLUSH の使用を可能にします。 |
REPLICATION CLIENT | G | ユーザがスレーブとマスタの場所を問い合わせることを可能にします。 |
REPLICATION SLAVE | G | 複製スレーブを可能とします。 (マスタからバイナリログイベントを読み込む為) |
SELECT | GDTC | SELECT の使用を可能にします。 |
SHOW DATABASES | G | SHOW DATABASES の使用を可能とします。 |
SHOW VIEW | GDT | SHOW CREATE VIEWの使用を可能にします。 |
SHUTDOWN | G | mysqladmin shutdown の使用を可能にします。 |
SUPER | G | CHANGE MASTER TO 、 KILL 、 PURGE BINARY LOGS 、 SET GLOBAL 、そして mysqladmin debug command の使用を可能にします。 |
TRIGGER | GDT | トリガの作成と削除を可能にします。 |
UPDATE | GDTC | UPDATE の使用を可能にします。 |
USAGE | G | 「権限が無い」 の同義語です。 |
権限の種類によって与える対象のレベルが決まっています。(G:グローバル、D:データベース、T:テーブル、C:カラムです、R:ルーチン、P:プロキシ)。
例えば SELECT 権限ではグローバルレベル単位からカラム単位まで任意のレベルで設定することができますので、すべてのデータベースに含まれるデータを取得できる権限を設定したり、特定のカラムだけデータを取得できるような権限を与えることができます。
-- --
MySQL における権限の種類と権限の一覧について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。