2017-01-31 23 views
0

我試圖做一個查詢,顯示用戶和他們所有的角色。我已經知道如何問一個特定用戶的角色:Postgres查詢有關每個用戶的角色

SELECT oid, rolname FROM pg_roles WHERE 
pg_has_role('name_of_user', oid, 'member'); 

任何想法如何做到這一點?

+0

添加http://dba.stackexchange.com/questions/56096/how-to-get-all-roles-that-a- user-is-a-member-of-including-inherited-roles/56104#56104將您的問題作爲查詢的來源 –

回答

0

運行psql -E看到元命令後面語句PSQL:

vao=# \du 
********* QUERY ********** 
SELECT r.rolname, r.rolsuper, r.rolinherit, 
    r.rolcreaterole, r.rolcreatedb, r.rolcanlogin, 
    r.rolconnlimit, r.rolvaliduntil, 
    ARRAY(SELECT b.rolname 
     FROM pg_catalog.pg_auth_members m 
     JOIN pg_catalog.pg_roles b ON (m.roleid = b.oid) 
     WHERE m.member = r.oid) as memberof 
, r.rolreplication 
, r.rolbypassrls 
FROM pg_catalog.pg_roles r 
ORDER BY 1; 
************************** 

            List of roles 
Role name |       Attributes       | Member of 
-----------+------------------------------------------------------------+----------- 
ro  | Cannot login            | {} 
rw  | Cannot login            | {} 
vao  | Superuser, Create role, Create DB, Replication, Bypass RLS | {ro,rw}