ywork2020.com

Title

ユーザーアカウントに権限を付与する

目次 (INDEX)

GRANT とは

GRANTとは「付与」という意味の単語です。
GRANT句を使うと、データベースに作成したユーザーアカウントに権限を付与することができます。

目次に戻る

GRANT句で設定できる権限のレベル

ここではMySQLを題材にして、ユーザーアカウントに設定できる各種、権限のレベルについて説明していきます。

G: グローバルレベル

グローバルレベル権限は、データベースソフトウェア全体のデータを操作できる権限です。 権限の情報は、mysqlデータベースのuserテーブルに登録されます。 MySQLで、この権限をもつ初期ユーザーはroot@localhostとなります。

グローバルレベルを付与する構文
GRANT ALL ON *.* TO ユーザー名;
グローバルレベルを付与したアカウント一覧の確認方法
SELECT * FROM mysql.user;

目次に戻る

D: データベースレベル

データベースレベル権限は、権限を付与されたデータベース内で、全てのデータを操作できる権限です。 権限の情報は、mysqlデータベースのdbテーブルに登録されます。

データベースレベルを付与する構文
GRANT ALL ON データベース名.* TO ユーザー名;
データベースレベルを付与したアカウント一覧の確認方法
SELECT * FROM mysql.db;

目次に戻る

T: テーブルレベル

テーブルレベル権限は、権限を付与されたテーブル内で、全てのデータを操作できる権限です。 権限の情報は、mysqlデータベースのtables_privテーブルに登録されます。

テーブルレベルを付与する構文
GRANT ALL ON データベース名.テーブル名 TO ユーザー名;
テーブルレベルを付与したアカウント一覧の確認方法
SELECT * FROM mysql.tables_priv;

目次に戻る

C: カラムレベル

カラムレベル権限は、権限を付与されたカラムのみ、データを操作できる権限です。 権限の情報は、mysqlデータベースのcolumns_privテーブルに登録されます。

テーブルレベルを付与する構文
GRANT ALL(カラム名) ON データベース名.テーブル名 TO ユーザー名;
テーブルレベルを付与したアカウント一覧の確認方法
SELECT * FROM mysql.columns_priv;

目次に戻る

R: ルーチンレベル

ルーチンレベル権限は、ストアドルーチンに対する権限です。 グローバルレベル、またはデータベースレベルで[CREATE ROUTINE],[ALTER ROUTINE],[EXECUTE],[GRANT OPTION]の権限付与します。 権限の情報は、mysqlデータベースのprocs_privテーブルに登録されます。

目次に戻る

P: プロキシユーザー

プロキシユーザー権限は、自らが持つ権限を他のユーザーに付与したり、削除することができる権限です。 権限の情報は、mysqlデータベースのproxies_privテーブルに登録されます。

目次に戻る

ユーザアカウントを指定して権限を確認するには、

データベースの任意のユーザーアカウントに付与された権限を確認するにはSHOW GRANTS文を使用します。

SHOW GRANTS FOR ユーザー名;

目次に戻る

MySQLで使用されている権限
ここで紹介している権限は、最初に覚えておくとよさそうなものをピックアップしたものです。
実際には相当数の権限があり、MySQLのバージョンアップでも変化していくでしょう。
詳細は、以下のリンクを参照して最新情報を得てください。
公式: MySQL :: MySQL 5.6 リファレンスマニュアル :: 6.2.1 MySQL で提供される権限
権限名適用できるレベル実行権限の内容
ALL [PRIVILEGES]
特別権限
G,D,TGRANT OPTION と PROXY 以外の全権限
ALTERG,D,Tテーブルの変更
CREATEG,D,Tデータベースとテーブルの作成
CREATE USERG[CREATE USER],[DROP USER],[RENAME USER],[EVOKE ALL PRIVILEGES] の実行
CREATE VIEWG,D,Tビューの作成と変更
DELETEG,D,Tデータベース・テーブル・ビューの削除
DROPG,D,Tテーブルの削除
INDEXG,D,Tインデックスの作成と削除
INSERTG,D,T,CINSERTの実行
REFERENCESG,D,T,C外部キーの作成
SELECTG,D,T,CSELECT の使用を可能にします。
SHOW DATABASESGSHOW DATABASESのの実行
SHOW VIEWG,D,TSHOW CREATE VIEWの実行
UPDATEG,D,T,CUPDATEの実行

目次に戻る

SQL の仕様上の注意点

※ SQL の予約句はアルファベットの大文字と小文字を区別しませんが、 任意で作成したデータベースやテーブル、カラムの名前などは区別されるので注意が必要です。

目次に戻る