1

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

前任。如果当前登录的用户不是超级用户,则结果来自

从 pg_roles 中选择 *;

或者

\du

应该只有行与他的角色

4

2 回答 2

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

并且通常不被认为是支持的。

于 2012-10-21T23:51:35.097 回答
0
revoke select on pg_roles from public;
于 2012-10-21T17:14:00.183 回答