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

问题描述 投票:17回答:3

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

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

ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT ALL ON TABLES TO role_name;
sql postgresql privileges
3个回答
30
投票

使用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

在此处的“注释”部分下了解更多有关它的信息:http://www.postgresql.org/docs/9.0/static/sql-alterdefaultprivileges.html


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;

[defaclobjtype的值为r = relation (table, view), S = sequence, f = function

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


-1
投票

如果将pg_default_act加入到pg_namespace,则将仅列出在架构中使用授予的默认特权。

© www.soinside.com 2019 - 2024. All rights reserved.