查找如何检索此类信息的一个好方法是查看帮助psql
并找到将显示此信息的命令。
在这种情况下,它是dg+
命令。
一旦您知道该命令,您就可以启用打印内部 SQL 查询psql
工具来了解它如何检索该信息。这是通过启动来完成的psql
使用-E
范围。
如果你这样做,你会看到:
psql (9.4.5)
Type "help" for help.
postgres=# \dg+
********* 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
, pg_catalog.shobj_description(r.oid, 'pg_authid') AS description
, r.rolreplication
FROM pg_catalog.pg_roles r
ORDER BY 1;
**************************
List of roles
Role name | Attributes | Member of | Description
---------------+-----------------------------------+-----------+-----------------------
someone | | {} | THIS IS A ROLE COMMENT
如果您只是想要,从您的问题中不清楚some方法查看评论,然后dg+
可能就足够了。否则,您可以调整所使用的 SQL 查询psql
根据您的需要,例如:
SELECT pg_catalog.shobj_description(r.oid, 'pg_authid') AS description
FROM pg_catalog.pg_roles r
where r.rolname = 'someone';
注意:\du 和 \dg 在 psql 中是相同的命令。两者均已维护由于历史原因 https://www.postgresql.org/message-id/18782.1248206562%40sss.pgh.pa.us。