时间:2024-02-24 17:17作者:下载吧人气:69
当我们对Postgresql的某个用户授予默认权限时, pg_default_acl表存储要被分配给新创建对象的初始权限。你可能通过查询该表获取默认权限,先了解下官方文档的解释:
表 50-17. pg_default_acl的列:
名称 | 类型 | 引用 | 描述 |
---|---|---|---|
oid | oid | 行标识符(隐藏属性,必须被显式选择才会显示) | |
defaclrole | oid | pg_authid.oid | 与此项相关的角色的OID |
defaclnamespace | oid | pg_namespace.oid | 与此项相关的名字空间的OID,如果没有则为0 |
defaclobjtype | char | 此项适合的对象类型: r = 关系(表、视图), S = 序列, f = 函数, T = 类型 | |
defaclacl | aclitem[] | 此类对象在创建时应用有的访问权限 |
一个pg_default_acl项展示了要分配给属于一个指定用户的对象的初始权限。当前有两类项:defaclnamespace = 0的”全局”项和引用一个特殊模式的”每模式”项。如果一个全局项存在,则它重载该对象类型的普通hard-wired默认权限。一个每模式项如果存在,表示权限将被加入到全局或hard-wired默认权限中。
演示数据库版本:PostgreSQL 9.6.8
这里我们测试给test用户添加“abc”模式的默认权限,先查看下当前schema的所有者:
// 查看当前schema的所有者,相当于du元命令
SELECT n.nspname AS “Name”,
pg_catalog.pg_get_userbyid(n.nspowner) AS “Owner”
FROM pg_catalog.pg_namespace n
WHERE n.nspname !~ ‘^pg_’ AND n.nspname <> ‘information_schema’
ORDER BY 1;
网友评论