MYSQLユーザー権限レベルの種類について

「グローバル レベル」

既存サーバ上では、グローバル権限は全てのデータベースに適応します。
これらの権限は mysql.user テーブル内に格納されています。
GRANT ALL ON *.* と REVOKE ALL ON *.* はグローバル権限だけを供与、廃止します。

「データベース レベル」

データベース権限は既存データベース内の全てのオブジェクトに適応します。
これらの権限は mysql.db と mysql.host テーブル内に格納されています。
GRANT ALL ON db_name.* と REVOKE ALL ON db_name.* はグローバル権限だけを供与、廃止します。

「テーブル レベル」

テーブル権限は既存テーブル内の全てのカラムに適応します。
これらの権限は mysql.tables_priv テーブル内に格納されています。
GRANT ALL ON db_name.tbl_name と REVOKE ALL ON db_name.tbl_name は
グローバル権限だけを供与、廃止します。

「カラム レベル」

カラム権限は既存テーブル内の単一カラムに適応します。
これらの権限は mysql.columns_priv テーブル内に格納されています。
REVOKE を利用している時は、供与されたカラムと同じカラムを指定する必要があります。

「ルーチン レベル」

CREATE ROUTINE、ALTER ROUTINE、EXECUTE、そして GRANT 権限は
ストアド ルーチンに適応します。(ファンクションとプロシージャ)それらは、
グローバルとデータベース レベルで供与されます。また、CREATE ROUTINE 以外は、
これらの権限は各ルーチンに対してルーチン レベルで供与する事ができ、
mysql.procs_priv テーブル内で格納されます。

GRANT は最大60文字のホスト名をサポートします。
データベース、テーブル、カラム、そしてルーチン名は最大64文字です。
ユーザ名は最大16文字です。
注意:ユーザ名の許容長さは、mysql.user テーブルを変更しても変える事はできません。
もしそれをすると、ユーザが MySQL サーバにログインできなくなってしまうような、
予想不可能な動作に陥る可能性があります。

===============================================================================
GRANT と REVOKE ステートメントに対しては、priv_type は次の表にある物として指定する事ができます。
===============================================================================
権限 意味
===============================================================================
ALL [PRIVILEGES] GRANT OPTION 以外の全てのシンプルな権限を設定します。
ALTER ALTER TABLE の使用を可能にします。
ALTER ROUTINE ストアド ルーチンの変更、ドロップを可能にします。
CREATE CREATE TABLE の使用を可能にします。
CREATE ROUTINE ストアド ルーチンの作成を可能にします。
CREATE TEMPORARY TABLES CREATE TEMPORARY TABLE の使用を可能にします。
CREATE USER CREATE USER、DROP USER、RENAME USER、そして
REVOKE ALL PRIVILEGES の使用を可能にします。
CREATE VIEW CREATE VIEW の使用を可能にします。
DELETE DELETE の使用を可能にします。
DROP DROP TABLE の使用を可能にします。
EVENT イベントスケジューラがイベントを作成するのを可能にします。
EXECUTE ユーザがストアドルーチンを起動させるのを可能にします。
FILE SELECT … INTO OUTFILE と LOAD DATA INFILE の使用を可能にします。
INDEX CREATE INDEX と DROP INDEX の使用を可能にします。
INSERT INSERTの使用を可能にします。
LOCK TABLES SELECT 権限を持つテーブル上の LOCK TABLES の使用を可能にします。
PROCESS SHOW FULL PROCESSLIST の使用を可能にします。
REFERENCES インプリメントされていません。
RELOAD FLUSH の使用を可能にします。
REPLICATION CLIENT ユーザがスレーブとマスタの場所を問い合わせる事を可能にします。
REPLICATION SLAVE 複製スレーブが必要とします。 (マスタからバイナリ ログ イベントを読み込む為)
SELECT SELECT の使用を可能にします。
SHOW DATABASES SHOW DATABASES は全てのデータベースを表示します。
SHOW VIEW SHOW CREATE VIEWの使用を可能にします。
SHUTDOWN mysqladmin shutdown の使用を可能にします。
SUPER CHANGE MASTER、KILL、PURGE MASTER LOGS、そして SET GLOBAL
ステートメントの使用を可能にし、 the mysqladmin debug コマンドは
max_connections が達成していても接続を (一回) 許可します。
TRIGGER ユーザがトリガを作成、ドロップするのを可能にします。
UPDATE UPDATE の使用を可能にします。
USAGE 「権限が無い」 の同義語です。
GRANT OPTION 権限を与えるのを可能にします。
===============================================================================
EVENT と TRIGGER 権限は MySQL 5.1.6 で追加されました。
トリガはテーブルと関連しているので、トリガを作成したり、
ドロップしたりするには、トリガではなくテーブルに TRIGGER 権限を持つ
必要あります。
(MySQL 5.1.6 以前では SUPER 権限はトリガを作成したりドロップしたりする為に必要でした。)

テーブル、カラム、ルーチンの権限は、各権限レベルの権限の論理的な OR として
相加的に形成されています。例えば、もし mysql.user テーブルが、ユーザはグローバル
SELECT 権限を持つ、と指定すると、その権限はデータベース、テーブル、
またはカラムレベルのエントリによって否定する事はできません。

カラムの権限は次のように計算する事ができます。

global privileges
OR (database privileges AND host privileges)
OR table privileges
OR column privileges
OR routine privileges

=========================
メモ
=========================
※ユーザーがDROPされても接続されているユーザーは、自動的にTERMINATEされません。
※GLOBAL PRIVILEDGEの変更は既に接続している状態のユーザーには影響しません。
次回接続時から反映されます。
※DATABASE権限に関しては、USERが「USE DATABASE」コマンドを実行したときに
反映されます。
※TABLE & COLUMN権限は変更時に即時反映されます。