选择 current_user 的组名
Posted
技术标签:
【中文标题】选择 current_user 的组名【英文标题】:Selecting groups name of current_user 【发布时间】:2019-02-04 04:06:06 【问题描述】:我使用以下命令检查 PostgreSQL 数据库中用户的组或角色,
select rolname from pg_authid where pg_has_role('some_username', rolname, 'member');
如所见,我必须在上面的查询中手动输入用户名,例如上面的'some_username'
。
有没有一种方法可以查询当前用户,我的意思是当前与数据库连接的用户。类似于下面的命令,
select rolname from pg_authid where pg_has_role(current_user, rolname, 'member');
此命令无法正常工作。它从pg_authid
返回完整的rolname
列。
【问题讨论】:
【参考方案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');
【讨论】:
谢谢。它工作得很好。你永远是 SQL 的救星 :)以上是关于选择 current_user 的组名的主要内容,如果未能解决你的问题,请参考以下文章