PG_DEFAULT_ACL - Amazon Redshift

PG_DEFAULT_ACL

存储有关默认访问权限的信息。有关默认访问权限的更多信息,请参阅 ALTER DEFAULT PRIVILEGES

PG_DEFAULT_ACL 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其自己的数据。有关更多信息,请参阅 系统表和视图中的数据可见性

表列

列名称 数据类型 描述
defacluser integer 列出的权限所应用于的用户的 ID。
defaclnamespace oid 默认权限应用于的 schema 的对象 ID。如果未指定 schema,则默认值为 0。
defaclobjtype character

默认权限应用于的对象的类型。有效值如下所示:

  • r–关系(表或视图)

  • f–函数

  • p–存储过程

defaclacl aclitem[]

一个字符串,该字符串定义指定用户或用户组及对象类型的默认权限。

如果向用户授予权限,则字符串采用以下格式:

{ username=privilegestring/grantor }

username

向其授予权限的用户的名称。如果忽略 username,则将权限授予 PUBLIC。

如果向用户组授予权限,则字符串采用以下格式:

{ "group groupname=privilegestring/grantor" }

privilegestring

一个字符串,该字符串指定要授予的权限。

有效值为:

  • r–SELECT(读取)

  • a–INSERT(附加)

  • w–UPDATE(写入)

  • d–DELETE

  • x–授予用于创建外键约束的权限 (REFERENCES)。

  • X–EXECUTE

  • *–指示接收上一权限的用户又可以将相同权限授予其他用户 (WITH GRANT OPTION)。

grantor

已授予权限的用户的名称。

以下示例指示用户 admin 已将所有权限(包括 WITH GRANT OPTION)授予用户 dbuser

dbuser=r*a*w*d*x*X*/admin

示例

以下查询返回为数据库定义的所有默认权限。

select pg_get_userbyid(d.defacluser) as user, n.nspname as schema, case d.defaclobjtype when 'r' then 'tables' when 'f' then 'functions' end as object_type, array_to_string(d.defaclacl, ' + ') as default_privileges from pg_catalog.pg_default_acl d left join pg_catalog.pg_namespace n on n.oid = d.defaclnamespace; user | schema | object_type | default_privileges -------+--------+-------------+------------------------------------------------------- admin | tickit | tables | user1=r/admin + "group group1=a/admin" + user2=w/admin

上述示例中的结果表明,对于用户 admintickit schema 中创建的所有新表,admin 将 SELECT 权限授予 user1,将 INSERT 权限授予 group1,并将 UPDATE 权限授予 user2