PG_DEFAULT_ACL
存储有关默认访问权限的信息。有关默认访问权限的更多信息,请参阅 ALTER DEFAULT PRIVILEGES。
PG_DEFAULT_ACL 对所有用户可见。超级用户可以查看所有行;普通用户只能查看其自己的数据。有关更多信息,请参阅 系统表和视图中的数据可见性。
表列
列名称 | 数据类型 | 描述 |
---|---|---|
defacluser | integer | 列出的权限所应用于的用户的 ID。 |
defaclnamespace | oid | 默认权限应用于的 schema 的对象 ID。如果未指定 schema,则默认值为 0。 |
defaclobjtype | character |
默认权限应用于的对象的类型。有效值如下所示:
|
defaclacl | aclitem[] |
一个字符串,该字符串定义指定用户或用户组及对象类型的默认权限。 如果向用户授予权限,则字符串采用以下格式:
username 向其授予权限的用户的名称。如果忽略 username,则将权限授予 PUBLIC。 如果向用户组授予权限,则字符串采用以下格式:
privilegestring 一个字符串,该字符串指定要授予的权限。 有效值为:
grantor 已授予权限的用户的名称。 以下示例指示用户
|
示例
以下查询返回为数据库定义的所有默认权限。
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
上述示例中的结果表明,对于用户 admin
在 tickit
schema 中创建的所有新表,admin
将 SELECT 权限授予 user1
,将 INSERT 权限授予 group1
,并将 UPDATE 权限授予 user2
。