Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 显示Postgres中关系、序列和函数的默认访问权限_Sql_Postgresql_Privileges - Fatal编程技术网

Sql 显示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版本中,还有另一种

更改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