【发布时间】:2020-01-21 12:23:21
【问题描述】:
如上所述,我想列出所有用户 + 他们的架构(他们在哪里获得了 USAGE 权限)。
所以我差不多完成了,
让我告诉你我得到了什么:
SELECT
u.usesysid as idUser,
u.usename as login,
u.passwd as password,
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 member_of,
ARRAY(SELECT nspname
FROM pg_namespace pn,pg_catalog.pg_roles b
JOIN pg_catalog.pg_auth_members m ON (m.member = b.oid)
WHERE pg_catalog.has_schema_privilege(b.rolname, nspname, 'USAGE')= true
AND m.member = r.oid
AND nspname <> 'information_schema'
AND nspname !~~ 'pg\_%') as usage_schemas
FROM
pg_catalog.pg_roles r
JOIN
pg_catalog.pg_user u on(r.rolname=u.usename)
WHERE
usename !~ 'postgres'
ORDER BY
1;
这是我得到的: https://image.noelshack.com/fichiers/2019/38/5/1568980459-capture5.png
这就是我想要的: https://image.noelshack.com/fichiers/2019/38/5/1568967833-capture4.png
谁能帮帮我?
【问题讨论】:
标签: arrays postgresql join select