説明
このステートメントは、システム管理者がユーザーの特定の権限を取り消すために使用されます。
制限事項と注意点
- ユーザーは、取り消す権限を保有していなければなりません(例えば、
user1がテーブルtbl1に対するuser2のSELECT権限を取り消す場合、user1はテーブルtbl1に対するSELECT権限を保有している必要があります)。また、GRANT OPTION権限も保有している必要があります。
権限要件
権限に
GRANT OPTIONが付与されていない場合、取り消し操作はカスケードされません。例えば、ユーザーuser1がuser2に特定の権限を付与した場合、user1の権限を取り消しても、user2の対応する権限は同時に取り消されません。GRANT OPTIONが付与されている場合、取り消し操作はカスケードされます。ALL PRIVILEGESおよびGRANT OPTION権限を取り消すには、現在のユーザーがグローバルなGRANT OPTION権限、または権限テーブルに対するUPDATEおよびDELETE権限を持っている必要があります。
OceanBaseデータベースの権限の詳細については、Oracleモードにおける権限の分類を参照してください。
構文
/*オブジェクト権限を取り消す*/
REVOKE {obj_privilege [, obj_privilege...]} ON obj_clause FROM {user_name [, user_name ...]}
/*システム権限を取り消す*/
REVOKE {system_privilege_list | ALL PRIVILEGES} FROM user_name [, user_name ...];
REVOKE ALL [PRIVILEGES], GRANT_OPTION FROM user_name [, user_name ...];
/*ロールを取り消す*/
REVOKE role_name [, role_name ...] FROM user_name;
obj_clause:
* [. *]
| relation_name . {* | relation_name}
| [DIRECTORY] relation_name
パラメータの説明
| パラメータ | 説明 |
|---|---|
| obj_privilege | 取り消す対象の権限タイプを指定します。具体的な権限タイプとその説明については、下記の権限タイプの説明表を参照してください。 複数の権限を同時に取り消す場合は、権限タイプを「,」で区切ります。 |
| obj_clause | 権限を取り消すレベルを指定し、relation_name で具体的なオブジェクト名を指定します。権限は以下のレベルに分類されます:
|
| system_privilege_list | 取り消すシステム権限タイプを指定します。 複数の権限を同時に取り消す場合は、権限タイプを「,」で区切ります。 |
| ALL [PRIVILEGES] | GRANT OPTION を除くすべての権限を示します。 |
obj_clause
* [. *]:すべてのデータベース内のすべてのテーブルを示します。例:
ユーザー
user001およびuser002からグローバルなSELECTおよびINSERT権限を取り消します。REVOKE SELECT, INSERT ON *.* FROM 'user001', 'user002';relation_name . {* | relation_name}:指定されたデータベース内のすべてのテーブルを示します。db_nameは指定されたデータベースのデータベース名を示します。例:
ユーザー
user003からtestデータベース内のすべてのテーブルへの挿入権限を取り消します。REVOKE INSERT ON 'test'.* FROM 'user003';[DIRECTORY] relation_name:特定のデータベース内の特定のテーブルを示します。例:
ユーザー
user003からtestデータベース内のtbl2テーブルに対するSELECT権限を取り消します。REVOKE SELECT ON 'test'.'tbl2' FROM 'user003';
取り消し可能な権限タイプは以下の表のとおりです。
権限タイプの説明
| 権限 | 説明 |
|---|---|
| ALL PRIVILEGES | GRANT OPTION を除くすべての権限。 |
| ALTER | ALTER TABLE の権限。 |
| CREATE | CREATE TABLE の権限。 |
| DELETE | DELETE の権限。 |
| DROP | DROP の権限。 |
| GRANT OPTION | GRANT OPTION の権限。 |
| INSERT | INSERT の権限。 |
| UPDATE | UPDATE の権限。 |
| SELECT | SELECT の権限。 |
| INDEX | CREATE INDEX および DROP INDEX の権限。 |
| SHOW VIEW | SHOW CREATE VIEW 権限。 |
| SHOW DATABASES | グローバル SHOW DATABASES の権限。 |
| SUPER | SET GLOBAL によりグローバルシステムパラメータを変更する権限。 |
| REFERENCES | テーブルへの参照制約を作成する権限。 |
| EXECUTE | プリペアドステートメントを実行する権限。 |
| FLASHBACK | FLASHBACK の権限。 |
| READ | READ の権限。 |
| WRITE | WRITE の権限。 |
| CREATE SESSION | データベースに接続する権限。 |
| EXEMPT REDACTION POLICY | 既存の任意の REDACTION POLICY を無視してデータを表示する権限。 |
| SYSDBA | SYSDBA の権限。 |
| SYSOPER | SYSOPERの権限。 |
| SYSBACKUP | SYSBACKUPの権限。 |
| CREATE TABLE | 指定されたユーザースキーマ内でテーブルを作成する権限。 |
| CREATE ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内でテーブルを作成する権限。 |
| ALTER ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内でテーブルを変更する権限。 |
| BACKUP ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内でテーブルを作成する権限。 |
| DROP ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内でテーブルをバックアップする権限。 |
| LOCK ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内でテーブルをロックする権限。 |
| COMMENT ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内でテーブルにコメントを付ける権限。 |
| SELECT ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内でテーブルを参照する権限。 |
| INSERT ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内のテーブルに行を挿入する権限。 |
| UPDATE ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内のテーブルの行を更新する権限。 |
| DELETE ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内でテーブルを削除する権限。 |
| FLASHBACK ANY TABLE | SYSユーザー以外のすべてのユーザースキーマ内でテーブルをFLASHBACKする権限。 |
| CREATE ROLE | ロールを作成する権限。 |
| DROP ANY ROLE | 任意のロールを削除する権限。 |
| GRANT ANY ROLE | 任意のロールに権限を付与する権限。 |
| ALTER ANY ROLE | 任意のロールを変更する権限。 |
| AUDIT ANY | SYSユーザー以外のすべてのユーザースキーマ内でオブジェクトを変更する権限。 |
| GRANT ANY PRIVILEGE | 任意のシステム権限を付与する権限。 |
| GRANT ANY OBJECT PRIVILEGE | 任意のオブジェクト権限を付与する権限。 |
| CREATE ANY INDEX | SYSユーザー以外のすべてのユーザースキーマ内でインデックスを作成する権限。 |
| ALTER ANY INDEX | SYSユーザー以外のすべてのユーザースキーマ内でインデックスを変更する権限。 |
| DROP ANY INDEX | SYSユーザー以外のすべてのユーザースキーマ内でインデックスを削除する権限。 |
| CREATE ANY VIEW | SYSユーザー以外のすべてのユーザースキーマ内でビューを作成する権限。 |
| DROP ANY VIEW | SYSユーザー以外のすべてのユーザースキーマ内でビューを削除する権限。 |
| CREATE VIEW | 指定されたユーザースキーマ内でビューを作成する権限。 |
| SELECT ANY DICTIONARY | 指定されたユーザースキーマ内でDICTIONARYを照会する権限。 |
| CREATE PROCEDURE | 指定されたユーザースキーマ内でPROCEDUREを作成する権限。 |
| CREATE ANY PROCEDURE | SYSユーザー以外のすべてのユーザースキーマ内でPROCEDUREを作成する権限。 |
| ALTER ANY PROCEDURE | SYSユーザー以外のすべてのユーザースキーマ内でPROCEDUREを変更する権限。 |
| DROP ANY PROCEDURE | SYSユーザー以外のすべてのユーザースキーマ内でPROCEDUREを削除する権限。 |
| EXECUTE ANY PROCEDURE | SYSユーザー以外のすべてのユーザースキーマ内でPROCEDUREを実行する権限。 |
| CREATE SYNONYM | 指定されたユーザースキーマ内でSYNONYMを作成する権限。 |
| CREATE ANY SYNONYM | SYSユーザー以外のすべてのユーザースキーマ内でSYNONYMを作成する権限。 |
| DROP ANY SYNONYM | SYSユーザー以外のすべてのユーザースキーマ内でSYNONYMを削除する権限。 |
| CREATE PUBLIC SYNONYM | 公共SYNONYMを作成する権限。 |
| DROP PUBLIC SYNONYM | 公共SYNONYMを削除する権限。 |
| CREATE SEQUENCE | 指定されたユーザースキーマ内でSEQUENCEを作成する権限。 |
| CREATE ANY SEQUENCE | SYSユーザー以外のすべてのユーザースキーマ内でSEQUENCEを作成する権限。 |
| ALTER ANY SEQUENCE | SYSユーザー以外のすべてのユーザースキーマ内でSEQUENCEを変更する権限。 |
| DROP ANY SEQUENCE | SYSユーザー以外のすべてのユーザースキーマ内でSEQUENCEを削除する権限。 |
| SELECT ANY SEQUENCE | SYSユーザー以外のすべてのユーザーのスキーマ内でSEQUENCEを照会する権限。 |
| CREATE TRIGGER | 指定されたユーザーのスキーマ内でTRIGGERを作成する権限。 |
| CREATE ANY TRIGGER | SYSユーザー以外のすべてのユーザーのスキーマ内でTRIGGERを作成する権限。 |
| ALTER ANY TRIGGER | SYSユーザー以外のすべてのユーザーのスキーマ内でTRIGGERを変更する権限。 |
| DROP ANY TRIGGER | SYSユーザー以外のすべてのユーザーのスキーマ内でTRIGGERを削除する権限。 |
| CREATE PROFILE | PROFILEを作成する権限。 |
| ALTER PROFILE | PROFILEを変更する権限。 |
| DROP PROFILE | PROFILEを削除する権限。 |
| CREATE USER | ユーザーを作成する権限。 |
| ALTER USER | ユーザーを変更する権限。 |
| DROP USER | ユーザーを削除する権限。 |
| CREATE TYPE | 指定されたユーザーのスキーマ内でTYPEを作成する権限。 |
| CREATE ANY TYPE | SYSユーザー以外のすべてのユーザーのスキーマ内でTYPEを作成する権限。 |
| ALTER ANY TYPE | SYSユーザー以外のすべてのユーザーのスキーマ内でTYPEを変更する権限。 |
| DROP ANY TYPE | SYSユーザー以外のすべてのユーザーのスキーマ内でTYPEを削除する権限。 |
| EXECUTE ANY TYPE | SYSユーザー以外のすべてのユーザーのスキーマ内でTYPEを実行する権限。 |
| UNDER ANY TYPE | SYSユーザー以外のすべてのユーザーのスキーマ内でTYPEに基づいてSUBTYPEを作成する権限。 |
| PURGE DBA_RECYCLEBIN | システムのごみ箱からすべてのオブジェクトを削除する権限。 |
| CREATE ANY OUTLINE | SYSユーザー以外のすべてのユーザーのスキーマ内でOUTLINEを作成する権限。 |
| ALTER ANY OUTLINE | SYSユーザー以外のすべてのユーザーのスキーマ内でOUTLINEを変更する権限。 |
| DROP ANY OUTLINE | SYSユーザー以外のすべてのユーザーのスキーマ内でOUTLINEを削除する権限。 |
| SYSKM | SYSKM の権限。 |
| CREATE TABLESPACE | テーブルスペースを作成する権限。 |
| ALTER TABLESPACE | テーブルスペースを変更する権限。 |
| DROP TABLESPACE | テーブルスペースを削除する権限。 |
| ALTER SYSTEM | ALTER SYSTEM の権限 |
| CREATE DATABASE LINK | 指定されたユーザーのスキーマ内で DATABASE LINK を作成する権限。 |
| CREATE PUBLIC DATABASE LINK | PUBLIC DATABASE LINK を作成する権限。 |
| DROP DATABASE LINK | 指定されたユーザーのスキーマ内で DATABASE LINK を削除する権限。 |
| ALTER SESSION | SESSION を変更する権限。 |
| ALTER DATABASE | DATABASE を変更する権限。 |
例
ユーザーとロールを作成します。
CREATE USER user1 IDENTIFIED BY password; CREATE ROLE role1; CREATE TABLE user1.tbl1 (id INT);ロールに権限を付与します。
GRANT SELECT ON user1.tbl1 TO role1;ユーザーにロールを付与します。
GRANT role1 TO user1;ロールのテーブルに対する権限を取り消します。
REVOKE SELECT ON user1.tbl1 FROM role1;
上記の手順で、権限の付与と権限の取り消し操作を完全に実現できます。
以下の例では、すべての権限を取り消す、オブジェクト権限を取り消す、システム権限を取り消すSQL文を示します。
- ユーザーuser1のすべての権限を取り消します。
obclient> REVOKE ALL PRIVILEGES FROM user1;
Query OK, 0 rows affected
- ロールrole1のテーブルuser1.tbl1に対するSELECTオブジェクト権限を取り消します。
obclient> REVOKE SELECT ON user1.tbl1 FROM role1;
Query OK, 0 rows affected
- ユーザーuser1とユーザーuser2のDROP ANY TABLEシステム権限を取り消します。
obclient> REVOKE DROP ANY TABLE FROM user1,user2;
Query OK, 0 rows affected