説明
このステートメントは、システム管理者がユーザーの特定の権限を取り消すために使用します。
制限事項と注意点
- ユーザーは取り消す権限を持っている必要があります(例えば、
user1がuser2のテーブルtbl1に対する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
| LOCATION location_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';LOCATION location_name:Locationオブジェクトを表します。説明
OceanBaseデータベースV4.4.x系では、
REVOKEステートメントはV4.4.1バージョンからLOCATIONパラメータおよび対応するREADとWRITE権限をサポートしています。例:
ユーザー
user005のLocationオブジェクトlocal_tに対するREAD権限を取り消します。REVOKE READ ON LOCATION local_t FROM user005;
取り消せる権限タイプは以下の表のとおりです。
権限タイプ説明表
権限 |
説明 |
|---|---|
| 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