Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

ALTER DEFAULT PRIVILEGES

定义默认访问权限集,这些权限将应用于指定的用户在以后创建的对象。默认情况下,用户只能更改他们自己的默认访问权限。只有超级用户能够为其他用户指定默认权限。

您可以将默认权限应用到用户或用户组。您可以为在当前数据库中创建的所有对象全局设置默认权限,也可以仅为在指定的 schemas 中创建的对象进行设置。

默认权限仅应用于新对象。运行 ALTER DEFAULT PRIVILEGES 时不会更改现有对象的权限。

有关权限的更多信息,请参阅 GRANT

要查看有关数据库用户的默认权限的信息,请查询 PG_DEFAULT_ACL 系统目录表。

语法

Copy
ALTER DEFAULT PRIVILEGES [ FOR USER target_user [, ...] ] [ IN SCHEMA schema_name [, ...] ] grant_or_revoke_clause where grant_or_revoke_clause is one of: GRANT { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON TABLES TO { user_name [ WITH GRANT OPTION ]| GROUP group_name | PUBLIC } [, ...] GRANT { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS TO { user_name [ WITH GRANT OPTION ] | GROUP group_name | PUBLIC } [, ...] REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON TABLES FROM user_name [, ...] [ CASCADE | RESTRICT ] REVOKE { { SELECT | INSERT | UPDATE | DELETE | REFERENCES } [,...] | ALL [ PRIVILEGES ] } ON TABLES FROM { GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ] REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM user_name [, ...] [ CASCADE | RESTRICT ] REVOKE { EXECUTE | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM { GROUP group_name | PUBLIC } [, ...] [ CASCADE | RESTRICT ]

参数

FOR USER target_user

可选。为其定义默认权限的用户的名称。只有超级用户能够为其他用户指定默认权限。默认值为当前用户。

IN SCHEMA schema_name

可选。如果出现 IN SCHEMA 子句,则指定默认权限将应用于在指定 schema_name 中创建的新对象。在这种情况下,作为 ALTER DEFAULT PRIVILEGES 目标的用户或用户组必须对指定 schema 拥有 CREATE 权限。特定于某个 schema 的默认权限将添加到现有的全局默认权限中。默认情况下,默认权限全局应用于整个数据库。

GRANT

针对指定用户创建的所有新表或函数,向指定的用户或组授予权限集。与使用 GRANT 命令一样,您可以使用 GRANT 子句来设置相同的权限和选项。

WITH GRANT OPTION

一个子句,指示接收权限的用户又可以将相同权限授予其他用户。您无法将 WITH GRANT OPTION 授予组或 PUBLIC。

TO user_name | GROUP group_name

将应用指定的默认权限的用户或用户组的名称。

REVOKE

针对指定用户创建的所有新表或函数,从指定的用户或组撤消权限集。与使用 REVOKE 命令一样,您可以使用 REVOKE 子句来设置相同的权限和选项。

GRANT OPTION FOR

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

FROM user_name | GROUP group_name

默认情况下将从其撤消指定权限的用户或用户组的名称。

示例

假设您希望允许用户组 report_readers 中的所有用户查看用户 report_admin 创建的所有表。在这种情况下,以超级用户身份执行以下命令。

Copy
alter default privileges for user report_admin grant select on tables to group report_readers;

在以下示例中,第一个命令授予对您创建的所有新表的 SELECT 权限。

Copy
alter default privileges grant select on tables to public;

以下示例针对您在 sales schema 中创建的所有新表和视图,将 INSERT 权限授予 sales_admin 用户组。

Copy
alter default privileges in schema sales grant insert on tables to group sales_admin;

以下示例撤消上述示例中 ALTER DEFAULT PRIVILEGES 命令的执行效果。

Copy
alter default privileges in schema sales revoke insert on tables from group sales_admin;

默认情况下,PUBLIC 用户组对所有新的用户定义的函数具有 EXECUTE 权限。要撤消 public 对您的新函数的 EXECUTE 权限,然后只将 EXECUTE 权限授予 dev_test 用户组,请执行以下命令。

Copy
alter default privileges revoke execute on functions from public; alter default privileges grant execute on functions to group dev_test;

本页内容: