显示Postgres中关系,序列和函数的默认访问权限

Cli*_*chl 17 sql postgresql privileges

更改Postgres数据库对象的默认权限后,如何查看它们?

例如,如果role_name为模式中创建的所有表授予所有权限schema_name:

ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT ALL ON TABLES TO role_name;
Run Code Online (Sandbox Code Playgroud)

Zyp*_*rax 31

使用psql(1)交互式终端

还有另一种方式,至少在最近的Postgres版本中.
使用该\ddp命令

               Default access privileges
     Owner      | Schema |   Type   | Access privileges 
----------------+--------+----------+-------------------
 role_x         |        | function | =X/role_x
 role_x         |        | sequence | 
 role_x         |        | table    | 
 role_x         |        | type     | =U/role_x
Run Code Online (Sandbox Code Playgroud)

在Notes部分下阅读更多相关信息:http:
//www.postgresql.org/docs/9.0/static/sql-alterdefaultprivileges.html

  • @Madeo,您可能没有创建任何访问权限。我刚刚在使用 Postgresql 12.5 创建的新数据库上运行“\ddp”,它返回 *0 行*。 (2认同)

Cli*_*chl 18

使用SQL查询

SELECT 
  nspname,         -- schema name
  defaclobjtype,   -- object type
  defaclacl        -- default access privileges
FROM pg_default_acl a JOIN pg_namespace b ON a.defaclnamespace=b.oid;
Run Code Online (Sandbox Code Playgroud)

其中的值defaclobjtypeR =关系(表,视图),S =序列,F =函数.

这些访问权限仅适用于架构命名空间中新创建的对象.

  • @Zyphrax 实际上,如果您使用 `-E` 运行 psql,您可以看到 `\ddp` 在那里使用了 LEFT JOIN。 (5认同)