【ORACLE】オブジェクト権限を付与・取消するSQL


ここではORACLEデータベースで、ユーザにオブジェクト権限を付与するSQLを紹介しています。

オブジェクト権限の一覧を確認する方法は↓で紹介しています。
>>【ORACLE】オブジェクト権限を確認するSQL

オブジェクト権限とは

オブジェクト権限とは、ユーザーがオブジェクトへのアクセスを許可または制限するものがオブジェクト権限です。

例えば、AというユーザーからBというユーザーのTAB1テーブルには、SELECTを許可する場合です。AというユーザにTAB1テーブルへのSELECT権限を付与します。

このとき、UPDATEやINSERTの権限は付与していないので、AというユーザからTAB1テーブルへのデータの更新や挿入は出来ません。

このようにオブジェクト単位で細かく権限を付与することが出来ます。

オブジェクト権限とシステム権限の違い

オブジェクト権限は任意の表やオブジェクトに対する権限で、システム権限はデータベースに対する権限という違いがあります。

システム権限については、↓で詳しく解説していますので参考にしてください。
>>【ORACLE】システム権限を付与・取消するSQL

オブジェクト権限を確認する方法

オブジェクト権限はDBA_TAB_PRIVSを参照することで確認できます。

DBA_TAB_PRIVSの詳細は↓で紹介していますので参考にしてください。
>>【ORACLE】オブジェクト権限を確認するSQL

オブジェクト権限を付与する基本構文

ユーザにオブジェクト権限を付与するときはGRANT文を使います。

GRANT文では、オブジェクト権限名とオブジェクト名、ユーザ名を指定します。

GRANT オブジェクト権限名 ON オブジェクト名 TO ユーザ名
[WITH GRANT OPTION];

・[WITH GRANT OPTION]を指定することで、オブジェクト権限を付与されたユーザーが、付与された権限を別のユーザーに付与することが出来ます。

【オブジェクト権限名】
 ・ALTER:表などのオブジェクトの定義を変更する権限
 ・SELECT:SELECT文で問合せをする権限
 ・INSERT:INSERT文でレコードを挿入する権限
 ・UPDATE:UPDATE文でレコードを更新する権限
 ・DELETE:DELETE文でレコードを削除する権限
 ・REFERENCE:参照制約を作成する権限
 ・INDEX:表に索引を作成する権限
 ・EXECUTE:プロシージャやファンクションを実行する権限
 ・READ:ディレクトリ内のファイルを読み込む権限
 ・WRITE:ディレクトリ内のファイルに書き込む権限

GRANT文を使ったSQLサンプル

ここからはGRANT文を使ったSQLサンプルを紹介します。

権限を1つ付与する方法

GRANT文を使ってオブジェクトに対する権限を1つ付与することが出来ます。

次のSQLでは、USER1にTAB1テーブルのSELECT権限を付与しています。二行目のSQLでは、USER2にTAB1テーブルのUPDATE権限を付与しています。

GRANT SELECT ON tab1 TO user1;
GRANT UPDATE ON tab1 TO user2;

同時に複数の権限を付与する方法

GRANT文では、同時に複数の権限を付与することが出来ます。複数の権限を付与する場合はオブジェクト権限名をカンマ区切りで追加します。

次のSQLでは、USER1にTAB1テーブルのSELECT権限とDELETE権限、INSERT権限を付与しています。

GRANT SELECT,DELETE,INSERT ON tab1 TO user1;

全てのオブジェクト権限を付与する方法

GRANT文で一度に全てのオブジェクト権限を付与することが出来ます。

次のSQLでは、USER1にTAB1テーブルに対する全てのオブジェクト権限を付与しています。

GRANT ALL ON tab1 TO user1;

オブジェクト権限を取消する基本構文

ユーザにオブジェクト権限を取り消し(剝奪)するときはREVOKE文を使います。

REVOKE文では、削除したいオブジェクト権限名とオブジェクト名、ユーザ名を指定します。

REVOKE オブジェクト権限名 ON オブジェクト名 FROM ユーザ名

REVOKE文を使ったSQLサンプル

ここからはREVOKE文を使ったSQLサンプルを紹介します。

権限を1つ取り消す方法

REVOKE SELECT ON tab1 FROM user1;
REVOKE UPDATE ON tab1 FROM user2;

同時に複数の権限を取り消す方法

REVOKE SELECT,DELETE,INSERT ON tab1 FROM user1;

全てのオブジェクト権限を取り消す方法

REVOKE ALL ON tab1 FROM user1;

最後に

オブジェクト権限の付与はGRANT文、取り消しはREVOKE文を使います。

GRANT ALL~とすることで全ての権限を付与することもできます。REVOKE ALL~とすることで全ての権限を剝奪することもできます。

権限については↓でも紹介していますのでぜひ参考にしてください。
【ORACLE】権限とは?システム・オブジェクト権限について
【ORACLE】システム権限を付与・取消するSQL

【ORACLE】システム権限の一覧
【ORACLE】オブジェクト権限を確認するSQL
【ORACLE】ユーザに付与されている権限を確認するSQL

【ORACLE】ロールに付与されている権限を確認するSQL