选择current_user的组名

时间:2018-08-29 11:19:50

标签: sql postgresql user-roles

我使用以下命令检查PostgreSQL数据库中用户的组或角色,

select rolname from pg_authid where pg_has_role('some_username', rolname, 'member');

如所见,我必须在上面的查询中手动输入用户名,例如上面的'some_username'

有没有一种方法可以查询current_user,即当前与数据库连接的用户。类似于下面的命令,

select rolname from pg_authid where pg_has_role(current_user, rolname, 'member'); 

此命令无法正常运行。它从rolname返回完整的pg_authid列。

1 个答案:

答案 0 :(得分:1)

要访问pg_authid,您需要成为超级用户,因此current_user将成为超级用户,并且该角色具有所有角色。

要以非超级用户身份登录时获取该信息,请使用pg_roles

Quote from the manual for pg_roles

  

这只是pg_authid的公共可读视图,该视图空白了密码字段。

select rolname 
from pg_roles 
where pg_has_role(current_user, rolname, 'member');