Quantcast
Viewing all articles
Browse latest Browse all 173

MySQLの権限と付与状況の「見え方」

グローバル権限、データベース権限、テーブル権限など

Oracleではシステム権限とオブジェクト権限(と、SYSDBAなどの特殊権限)に別れるように、MySQLも権限のレベルがあります。

Oracleでいうところのシステム権限は、MySQLでグローバル権限、とおぼえてほぼ間違いないかと。

権限付与は、SQLお約束のGRANT文で。

GRANT権限種類 [(カラム)] ONデータベース.テーブル TO付与対象ユーザ [WITHGRANTOPTION]

ここで、
データベース:sampledb
テーブル:sample_tbl
カラム:col1,col2, ...
といった構造がある場合、GRANT文は以下の様な感じ。

権限種別GRANT文
グローバル権限GRANT 権限種別 ON *.* TO ...
データベース権限GRANT 権限種別 ON sampledb.* TO ...
テーブル権限GRANT 権限種別 ON sampledb.sample_tbl TO ...
カラム権限GRANT SELECT(col1,col2) ON sampledb.sampletbl TO ...

ストアドルーチン(ストアドプロシージャ)に対する権限コントロールも、テーブル権限の構文と同じです。

権限の種類

これは素直にマニュアルを見るべし。
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.7.1.4 GRANT 構文
表 13.1 GRANT および REVOKE に対して許容可能な権限

に、権限の種類と、どの権限がどのレベルで付与可能か記載されています。


Oracle経験者には、いくつか見慣れない権限があるものの、おおよそ困ることはないかと思います。

「USAGE権限」とは

「権限なし」のシノニムです
MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.7.1.4 GRANT 構文

ってなんじゃいな、って感じの説明ですが。特に権限がないよ、っていう権限です。

Oracleではユーザーを作るとまっさきに付与する「connect」がほぼイコールだと思ってもらってよいかと。


MySQLでは、CREATE USER文を発行してユーザーを作成すると、「USAGE」権限が自動付与されて、接続自体は可能となります。

しかし、他の権限はついてないので、SELECT等何もできません。


権限付与状況の確認

SHOW GRANTS FORユーザー名

で、付与状況が確認できます。

特徴としては、

  • GRANT文そのまま出力されます。
  • 複数回に分けてGRANTしたとしても、マージされたGRANT文になります。
  • 権限レベル(グローバル/データベースなど)毎に1文で表現されます。
GRANTSELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATEVIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATEUSER, EVENT, TRIGGERON *.* TOユーザー名 IDENTIFIEDBY PASSWORD '暗号化済パスワード'WITHGRANTOPTION


この場合、たくさんの権限種別が見えますが、グローバル権限だけを与えているため、1行で表現されます。
先ほどのUSAGEは、マージされて見えなくなってしまいますが、USAGE権限の名残としてIDENTIFIED BY パスワードが含まれています。

これが、データベース権限で付与されているユーザーの場合

GRANT USAGE ON *.* TOユーザー名 IDENTIFIEDBY PASSWORD '暗号化済パスワード'GRANTALLPRIVILEGESONデータベース名.* TOユーザー名

といったように、権限レベル毎に行が別れ、グローバル権限として唯一の存在であるUSAGEはそのまま見えている、という表示のされ方になります。



作業に先行して設計書とか手順書みたいなドキュメントに記述するとき、USAGEを記載するかしないかで混乱したので、調べてみましたとさ。

Image may be NSFW.
Clik here to view.
MariaDB&MySQL全機能バイブル

MariaDB&MySQL全機能バイブル


Viewing all articles
Browse latest Browse all 173

Trending Articles