Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

REVOKE

从用户或用户组删除访问权限,例如,用于创建或更新表的权限。

您无法授予或撤销对外部表的权限。相反,您可授予或撤销对外部架构的权限。

在 REVOKE 语句中指定要删除的权限。要授予权限,请使用 GRANT 命令。

语法

Copy
REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON { [ TABLE ] table_name [, ...] | ALL TABLES IN SCHEMA schema_name [, ...] } FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | TEMPORARY | TEMP } [,...] | ALL [ PRIVILEGES ] } ON DATABASE db_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { { CREATE | USAGE } [,...] | ALL [ PRIVILEGES ] } ON SCHEMA schema_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] EXECUTE ON FUNCTION function_name ( [ [ argname ] argtype [, ...] ] ) [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] USAGE ON LANGUAGE language_name [, ...] FROM { username | GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]

参数

GRANT OPTION FOR

仅撤消将指定的权限授予其他用户的选项,而不撤消权限本身。无法从组或 PUBLIC 撤消 GRANT OPTION。

SELECT

撤消用于通过 SELECT 语句从表或视图中选择数据的权限。

INSERT

撤消用于通过 INSERT 语句或 COPY 语句将数据加载到表中的权限。

UPDATE

撤消用于通过 UPDATE 语句更新表列的权限。

DELETE

撤消用于从表中删除数据行的权限。

REFERENCES

撤消用于创建外键约束的权限。您应该在被引用表和引用表上撤消此权限。

ALL [ PRIVILEGES ]

一次性从指定的用户或组撤消所有可用权限。PRIVILEGES 关键字是可选的。

ON [ TABLE ] table_name

撤消对表或视图的指定权限。TABLE 关键字是可选的。

ON ALL TABLES IN SCHEMA schema_name

撤消对被引用 schema 中的所有表的指定权限。

GROUP group_name

从指定的用户组撤消权限。

PUBLIC

从所有用户撤消指定的权限。PUBLIC 表示一个始终包含所有用户的组。单个用户的权限包含向 PUBLIC 授予的权限、向用户所属的所有组授予的权限以及向用户单独授予的任何权限。

CREATE

根据数据库对象,从用户或组撤消以下权限:

  • 对于数据库,对 REVOKE 使用 CREATE 子句将阻止用户在数据库中创建 schema。

  • 对于 schemas,对 REVOKE 使用 CREATE 子句将阻止用户在 schema 中创建对象。要重命名对象,用户必须具有 CREATE 权限并拥有要重命名的对象。

注意

默认情况下,所有用户都对 PUBLIC schema 具有 CREATE 和 USAGE 权限。

TEMPORARY | TEMP

撤消用于在指定的数据库中创建临时表的权限。

注意

默认情况下,向用户授予权限以通过其在 PUBLIC 组中自动获得的成员资格来创建临时表。要为任何用户删除用于创建临时表的权限,请撤消 PUBLIC 组的 TEMP 权限,然后明确向特定用户或用户组授予用于创建临时表的权限。

ON DATABASE db_name

撤消对指定数据库的权限。

USAGE

撤消对特定 schema 中的对象的 USAGE 权限,这将使用户无法访问这些对象。必须单独撤消这些对象的特定操作(例如,对函数的 EXECUTE 权限)。

注意

默认情况下,所有用户都对 PUBLIC schema 具有 CREATE 和 USAGE 权限。

ON SCHEMA schema_name

撤消对指定 schema 的权限。您可以使用 schema 权限来控制表的创建;数据库的 CREATE 权限仅控制 schema 的创建。

CASCADE

如果用户拥有带授予选项的权限并且已向其他用户授予权限,则这些其他用户拥有的权限是关联权限。如果将撤消第一个用户拥有的权限或授予选项并且存在关联权限,则在指定 CASCADE 的情况下也会撤消这些关联权限;否则,撤消操作将失败。

例如,如果用户 A 已将带授予选项的权限授予用户 B,而用户 B 已将权限授予用户 C,则用户 A 可以从用户 B 撤消授予选项,并在使用 CASCADE 选项的情况下又会从用户 C 撤消权限。

RESTRICT

仅撤消用户直接授予的那些权限。此行为是默认行为。

EXECUTE ON FUNCTION function_name

撤销特定函数的 EXECUTE 权限。由于函数名可重载,因此您必须包含函数的参数列表。有关更多信息,请参阅 对 UDF 命名

USAGE ON LANGUAGE language_name

撤消语言的 USAGE 权限。对于 Python UDF,使用 plpythonu。对于 SQL UDF,使用 sql

要创建 UDF,您必须具有使用 SQL 或 plpythonu (Python) 语言的权限。默认情况下,向 PUBLIC 授予 USAGE ON LANGUAGE SQL 权限,但是,您必须明确授予 USAGE ON LANGUAGE PLPYTHONU 权限才能指定用户或组。

要撤销 SQL 的使用权限,请先从 PUBLIC 撤销使用权限,然后仅向允许创建 SQL UDF 的特定用户或组授予 SQL 的使用权限。以下示例将从 PUBLIC 撤销对 SQL 的使用权限,然后向用户组 udf_devs 授予使用权限。

Copy
revoke usage on language sql from PUBLIC; grant usage on language sql to group udf_devs;

有关更多信息,请参阅 UDF 安全性和权限

使用说明

要撤消对象的权限,您必须满足下列条件之一:

  • 是对象所有者。

  • 是超级用户。

  • 拥有该对象和权限的授予权限。

    例如,以下命令使用户 HR 能够对 employees 表执行 SELECT 命令并对其他用户授予和撤消相同的权限:

    Copy
    grant select on table employees to HR with grant option;

    请注意,HR 无法撤消 SELECT 之外的任何操作的权限或 employees 表之外的任何其他表的权限。

超级用户可以访问所有对象,不管设置对象权限的 GRANT 和 REVOKE 命令如何。

PUBLIC 表示一个始终包含所有用户的组。默认情况下,PUBLIC 的所有成员都对 PUBLIC 架构具有 CREATE 和 USAGE 权限。要限制任何用户对 PUBLIC 架构的权限,您必须首先从 PUBLIC 撤销对 PUBLIC 架构的所有权限,然后向特定用户或组授予权限。以下示例控制 PUBLIC schema 中的表创建权限。

Copy
revoke create on schema public from public;

示例

以下示例从 GUESTS 用户组撤消对 SALES 表的 INSERT 权限。此命令使 GUESTS 的成员无法通过使用 INSERT 命令将数据加载到 SALES 表中:

Copy
revoke insert on table sales from group guests;

以下示例从用户 fred 撤消对 QA_TICKIT schema 中所有表的 SELECT 权限:

Copy
revoke select on all tables in schema qa_tickit from fred;

以下示例撤消用户 bobr 从视图中选择的权限:

Copy
revoke select on table eventview from bobr;

以下示例从所有用户撤消在 TICKIT 数据库中创建临时表的权限:

Copy
revoke temporary on database tickit from public;

本页内容: