Oracleのロール(ROLE)から権限を削除するSQL

Oracleのロール(ROLE)から権限を削除するSQL

Oracleはロール(ROLE)に割り当てた権限を削除することができます。

ロールから権限を削除するSQLは、「REVOKE~」を使います。

ロールから権限を削除する

-- ロールからシステム権限を削除する 
REVOKE {権限}FROM {ロール};
-- ロールからオブジェクト権限を削除する
REVOKE {権限}ON {オブジェクト} FROM {ロール}; 

ロールから権限を削除するには、システム権限とオブジェクト権限では若干SQLが異なります。オブジェクト権限はオブジェクトまで指定する必要があります。

例1. ロールからシステム権限を削除する

-- ROLE1からcreate table権限を削除する 
REVOKE create table FROM role1;

こちらはシステム権限を削除するパターンです。ここでは「role1」ロールから「create table権限」を削除しました。

例2. ロールからシステム権限を削除する(複数パターン)

-- ROLE1,ROLE2からcreate table権限、drop table権限を削除する
REVOKE create table,drop table FROM role1,role2;

ここでは「role1」「role2」という2つのロールから「create table権限」「drop table権限」の2つの権限を削除しました。

 例3. ロールからオブジェクト権限を削除する

-- ROLE1からtable1のinsert権限を削除する 
REVOKE insert ON table1 FROM role1;

こちらはオブジェクト権限を削除するパターンです。ここでは「role1」から「table1」の「insert権限」を削除しました。

 例4. ロールからオブジェクト権限をすべて削除する

-- ROLE1からtable1の権限をすべて削除する 
REVOKE all ON table1 FROM role1;

ここでは「ROLE1」から「table1」のオブジェクト権限を全て削除しました。オブジェクト権限を指定する箇所で「all」にすると全権限が削除できます。

以上、Oracleのロール(ROLE)から権限を削除するSQLでした。

コメント