Sql 显示Postgres中关系、序列和函数的默认访问权限
更改Postgres数据库对象的默认权限后,如何查看它们 例如,如果您为在架构Sql 显示Postgres中关系、序列和函数的默认访问权限,sql,postgresql,privileges,Sql,Postgresql,Privileges,更改Postgres数据库对象的默认权限后,如何查看它们 例如,如果您为在架构schema\u name中创建的所有表向role\u name授予所有权限: ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT ALL ON TABLES TO role_name; 使用SQL查询 其中,defaclobjtype的值为 这些访问权限仅适用于架构命名空间中新创建的对象。使用psql(1)交互终端 至少在最近的Postgres版本中,还有另一种
schema\u name
中创建的所有表向role\u name
授予所有权限:
ALTER DEFAULT PRIVILEGES IN SCHEMA schema_name GRANT ALL ON TABLES TO role_name;
使用SQL查询
其中,defaclobjtype
的值为
这些访问权限仅适用于架构命名空间中新创建的对象。使用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
请在此处的注释部分阅读更多信息:如果您加入
pg\u default\u act
到pg\u名称空间
,您将只列出在架构中使用时授予的默认权限 如果上面的查询结果为零,请在不使用pg_名称空间上的联接的情况下进行尝试。这就是我在发现\ddp之前使用的查询。@zyprax事实上,如果您使用-E
运行psql,您可以看到\ddp
在那里使用了左连接。为我工作!事件发现授予用户的权限不正确/分配不正确。并且“结果”以“{=arwdDxt/}”的形式出现在col defaclacl中,表示该角色将被授予权限arwdDxt用于所有者创建的对象。这目前不起作用,我得到的结果为空。旁注:默认权限有时很难删除。在我的例子中,我试图删除一个角色,所以我首先使用REASSIGN OWNED转移了所有权,然后使用drop OWNED删除了默认特权。不幸的是,这不起作用,它返回空results@Madeo您可能尚未创建任何访问权限。我刚刚在一个用Postgresql 12.5创建的新数据库上运行了\ddp
,它返回0行。@Madeo如果您实际对一个对象执行了“更改默认权限”,您应该只获得带有此属性的行
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