【发布时间】:2012-10-22 07:51:35
【问题描述】:
如何禁止非超级用户查看postgresql服务器中的其他用户?
例如。如果当前登录的用户不是超级用户,则结果来自
从 pg_roles 中选择 *;
或
\du
应该只有行与他的角色
【问题讨论】:
如何禁止非超级用户查看postgresql服务器中的其他用户?
例如。如果当前登录的用户不是超级用户,则结果来自
从 pg_roles 中选择 *;
或
\du
应该只有行与他的角色
【问题讨论】:
您可以撤销对系统目录中身份验证 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_authid 的访问权限,则无需撤销对pg_roles 的访问权限。
请注意,撤销对全局表的访问权限仍然是针对每个数据库的操作。
撤销对系统目录的访问可能会产生副作用,包括:
并且通常不被认为是受支持的。
【讨论】:
revoke select on pg_roles from public;
【讨论】:
\du 或 @987654323 上的权限被拒绝@
information_schema 或直接针对pg_authid 的查询。看我的回答。