【问题标题】:Selecting groups name of current_user选择 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 列。

【问题讨论】:

    标签: sql postgresql user-roles


    【解决方案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 的救星 :)
    猜你喜欢
    • 1970-01-01
    • 2023-02-14
    • 2011-08-15
    • 2017-10-02
    • 2018-07-18
    • 2012-09-07
    • 2019-07-12
    • 1970-01-01
    • 2013-02-05
    相关资源
    最近更新 更多