更新时间:2024-09-02 GMT+08:00

PG_DEFAULT_ACL

PG_DEFAULT_ACL系统表存储为新建对象设置的初始权限。

表1 PG_DEFAULT_ACL字段

名称

类型

描述

defaclrole

oid

与此权限相关的角色ID。

defaclnamespace

oid

与此权限相关的命名空间,如果没有,则为0。

defaclobjtype

"char"

此权限的对象类型。

  • r表示表或视图。
  • S表示序列。
  • f表示函数。
  • T表示类型。

defaclacl

aclitem[]

创建该类型时所拥有的访问权限。

应用示例

查看新建用户role1的初始权限:

1
2
3
4
select * from PG_DEFAULT_ACL;
 defaclrole | defaclnamespace | defaclobjtype |    defaclacl
------------+-----------------+---------------+-----------------
      16820 |           16822 | r             | {role1=r/user1}

也可使用如下语句进行转换后更直观的查看:

1
SELECT pg_catalog.pg_get_userbyid(d.defaclrole) AS "Granter",  n.nspname AS "Schema",  CASE d.defaclobjtype WHEN 'r' THEN 'table' WHEN 'S' THEN 'sequence' WHEN 'f' THEN 'function' WHEN 'T' THEN 'type' END AS "Type",  pg_catalog.array_to_string(d.defaclacl, E', ') AS "Access privileges" FROM pg_catalog.pg_default_acl d LEFT JOIN pg_catalog.pg_namespace n ON n.oid = d.defaclnamespace ORDER BY 1, 2, 3;

输出结果如下,表示通过用户user1授予用户role1对模式“user1”有读的权限。

1
2
3
4
 Granter | Schema | Type  | Access privileges
---------+--------+-------+-------------------
 user1   | user1  | table | role1=r/user1
(1 row)