仅允许postgres用户列表角色

时间:2012-10-21 15:35:08

标签: postgresql postgresql-9.1

如何禁止非超级用户在postgresql服务器中查看其他用户?

离。如果当前登录的用户不是超级用户,那么结果来自

  

来自pg_roles的SELECT *;

  

\杜

应该只是具有角色的行

2 个答案:

答案 0 :(得分:3)

您可以撤消对系统目录中的身份验证ID表的访问权限:

REVOKE SELECT ON pg_catalog.pg_authid FROM public;
REVOKE SELECT ON pg_catalog.pg_auth_members FROM public;

请注意,撤消对pg_roles的访问权限是不够的,因为pg_roles只是pg_authid的视图,手动运行视图查询或定义具有相同视图查询的新视图是微不足道的查询。 information_schema视图也直接使用pg_authid,不受撤销pg_roles访问权限的影响。如果您取消对pg_roles的访问权限,则无需撤消对pg_authid的访问权限。

请注意,撤消对全局表的访问仍然是按数据库操作。

撤销对系统目录的访问可能会产生副作用,包括:

  • 某些系统功能未按预期运行
  • JDBC驱动程序失败的工具中的某些元数据操作
  • ...... etc

并且通常不被视为支持。

答案 1 :(得分:0)

revoke select on pg_roles from public;