如何禁止非超级用户在postgresql服务器中查看其他用户?只允许postgres用户列表角色
ex。如果当前登录的用户不是超级用户,则来自
的结果SELECT * from pg_roles;
或
\杜
应该与他的角色只能排
如何禁止非超级用户在postgresql服务器中查看其他用户?只允许postgres用户列表角色
ex。如果当前登录的用户不是超级用户,则来自
的结果SELECT * from pg_roles;
或
\杜
应该与他的角色只能排
您可以在系统目录中取消获得的认证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
的访问权限。
请注意,撤消对全局表的访问仍然是按数据库操作。
撤销访问系统目录可能有副作用,包括:在像JDBC驱动程序未能
并且通常不被支持。
revoke select on pg_roles from public;
不幸的是我试图这样做,那是行不通的。 –
@KrzysztofMiksa它怎么没用?我在Pg9.0的一个实例上试了一下,它似乎工作正常:允许从普通用户登录,该用户对其已授予对象的正常允许的操作,但在'\ du'或''du' select ... from pg_roles' – dbenhur
@dbenhur它不会停止访问'information_schema'或直接针对'pg_authid'工作的查询。看到我的答案。 –