概要
この文は、ユーザーまたはロールに以前に付与された権限を取り消すために使用されます。また、ユーザーまたはロール内のロールも取り消すことができます。
制限事項と注意点
- オブジェクト権限の取り消し操作は連鎖しません。例えば、ユーザー
user1がuser2に特定の権限を付与した場合、user1の権限を取り消すと同時にuser2の対応する権限も取り消されるわけではありません。 - 権限を取り消す必要があるユーザーまたはロールは存在している必要があります。そうでない場合はエラーが発生します。
- システム変数
mandatory_rolesに含まれるロールは取り消すことができません。 REVOKEステートメントの実行は、現在ログインしているユーザーに即座に反映されます。
権限要件
特定権限レベルの権限を revoke する:ユーザーはrevokeされる権限(例:
user1がuser2によるテーブルt1に対するSELECT権限をrevokeする場合、user1はテーブルt1に対するSELECT権限を有している必要があります)と、GRANT OPTION権限を有している必要があります。すべての権限および授与オプションを revoke する:
ALL PRIVILEGESおよびGRANT OPTION権限を revoke する場合、現在のユーザーはグローバルGRANT OPTION権限を有しているか、権限テーブルに対するUPDATEおよびDELETE権限を有している必要があります。ユーザーまたはロール内のロール権限を revoke する:ロールを revoke するには、現在のユーザーは revoke されるロールを有し、かつ
ADMIN OPTION権限を有している必要があります。
OceanBaseデータベースの権限の詳細については、MySQLモードの権限分類を参照してください。
構文
ユーザーまたはロールのオブジェクト権限を取り消す
revoke_stmt1:
REVOKE grant_privileges ON priv_level FROM user_or_role_list;
revoke_stmt2:
REVOKE ALL [PRIVILEGES], GRANT OPTION FROM user_or_role_list;
revoke_stmt3:
REVOKE [IF EXISTS] role_name_list FROM user_or_role_list [IGNORE UNKNOWN USER];
grant_privileges:
priv_type_list
| ALL [PRIVILEGES]
priv_type_list:
priv_type[(column_name_list)] [, priv_type[(column_name_list)] ...]
column_name_list:
column_name [, column_name ...]
priv_level:
*.*
| db_name.*
| db_name.table_name
| CATALOG external_catalog_name
user_or_role_list:
user_or_role [, user_or_role ...]
user_or_role:
user_name | role_name
role_name_list:
role_name [, role_name ...]
パラメータの説明
| パラメータ | 説明 |
|---|---|
| revoke_stmt1 | ユーザーやロールから特定の権限レベルの権限を取り消すSQLステートメントです。 |
| revoke_stmt2 | ユーザーやロールからすべての権限および付与オプションを取り消すSQLステートメントです。 |
| revoke_stmt3 | ユーザーやロールからロールを取り消すSQLステートメントです。 |
| grant_privileges | 取り消す必要がある権限タイプを指定します。特定の権限タイプのリストにするか、すべての権限(GRANT OPTION を除く)にできます。 |
| priv_type_list | 具体的な権限タイプのリストを示します。複数の権限を同時に取り消す場合、権限間には英数字カンマ(,)を使用します。 |
| priv_type | 具体的な権限タイプを示します。詳細については、MySQLモードの権限分類を参照してください。注意:PROXYパラメータは現在のバージョンではこのキーワード構文のみが記録されており、機能は有効になりません。 |
| column_name_list | オプションです。テーブル内のカラムレベルの権限リストを取り消します。指定しない場合は、テーブルまたはオブジェクト全体の権限を取り消します。 |
| ALL [PRIVILEGES] | GRANT OPTION を除くすべての権限を示します。 |
| priv_level | 権限付与の階層を指定します。権限階層の具体的な値については、以下の priv_level を参照してください。 |
| user_or_role_list | 権限を取り消す必要があるユーザーまたはロールのリストを指定します。複数のユーザーまたはロールの権限を同時に取り消す場合、ユーザー名とロール名は英数字カンマ(,)で区切ります。 |
| user_name | ユーザー名を示します。 |
| role_name | ロール名を示します。 |
| IF EXISTS | オプションです。取り消すロールが存在しない場合、IF EXISTS オプションを使用すると、システムは警告を発行し、エラー メッセージは出力しません。 |
| role_name_list | 権限を取り消す必要があるロールのリストを指定します。複数のロールを取り消す場合、ロール名は英数字カンマ(,)で区切ります。 |
| IGNORE UNKNOWN USER | オプションです。権限を与えられた対象(ユーザーまたはロール)が存在しない場合、IGNORE UNKNOWN USER オプションを使用すると、システムは警告を発行し、エラー メッセージは出力しません。 |
| proxy | 現在のバージョンではこのキーワード構文のみが記録されており、機能は有効になりません。 |
priv_level
*.*:すべてのデータベース内のすべてのテーブルを表します。例:
ユーザー
user001およびuser002からグローバルなSELECTおよびINSERT権限を取り消します。REVOKE SELECT, INSERT ON *.* FROM user001, user002;db_name.*:指定されたデータベース内のすべてのテーブルを表します。db_nameは、指定されたデータベースのデータベース名を表します。例:
ユーザー
user003からtestデータベース内のすべてのテーブルに対する挿入権限を取り消します。REVOKE INSERT ON test.* FROM user003;db_name.table_name:特定のデータベース内の特定のテーブルを表します。例:
ユーザー
user003からtestデータベース内のtbl2テーブルに対するSELECT権限を取り消します。REVOKE SELECT ON test.tbl2 FROM user003;CATALOG external_catalog_name:Catalog 内のディレクトリを表します。例:
ユーザー
user004から、Catalog のオブジェクトtest_odps_catalogに対するUSE CATALOG権限を取り消します。REVOKE USE CATALOG ON CATALOG test_odps_catalog FROM user004;
例
例1:オブジェクト権限を回収する
test_user001 ユーザーの SELECT 権限を回収し、ALL PRIVILEGES で付与された権限を確認します。
ユーザー
test_user001にALL PRIVILEGES権限を付与します。GRANT ALL PRIVILEGES ON *.* TO test_user001;ユーザー
test_user001が保有する権限を確認します。SHOW GRANTS FOR test_user001;実行結果は次のとおりです:
+-----------------------------------------------+ | Grants for test_user001@% | +-----------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'test_user001' | +-----------------------------------------------+ 1 row in setユーザー
test_user001のSELECT権限を回収します。REVOKE SELECT ON *.* FROM test_user001;再びユーザー
test_user001が保有する権限を確認します。SHOW GRANTS FOR test_user001;実行結果は次のとおりです:
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Grants for test_user001@% | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | GRANT ALTER, CREATE, CREATE USER, DELETE, DROP, INSERT, UPDATE, INDEX, CREATE VIEW, SHOW VIEW, SHOW DATABASES, SUPER, PROCESS, CREATE_SYNONYM, REFERENCES, FILE, ALTER TENANT, ALTER SYSTEM, CREATE RESOURCE POOL, CREATE RESOURCE UNIT, REPLICATION SLAVE, REPLICATION CLIENT, DROP DATABASE LINK, CREATE DATABASE LINK, EXECUTE, ALTER ROUTINE, CREATE ROUTINE, CREATE TABLESPACE, SHUTDOWN, RELOAD, CREATE ROLE, DROP ROLE, TRIGGER ON *.* TO 'test_user001' | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ 1 row in set
例2:ユーザーのすべての権限を取り消す
ユーザー test_user002 のすべての権限を取り消します。
REVOKE ALL PRIVILEGES, GRANT OPTION FROM test_user002;
例3:ユーザーまたはロール内のロールを revoke
ロール
role002内のロールrole001を revoke します。REVOKE role001 FROM role002;ユーザー
user001内のロールrole001を revoke します。REVOKE role001 FROM user001;