【问题标题】:Query to list all user + their schemas. PostgreSQL查询以列出所有用户 + 他们的模式。 PostgreSQL
【发布时间】: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


    【解决方案1】:

    这是正确的:

    SELECT
        u.usesysid as idUtilisateur,
        u.usename as login,
        u.passwd as motDePasse,
        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 groupes,
        ARRAY(SELECT nspname
            FROM pg_namespace pn
            WHERE pg_catalog.has_schema_privilege(r.rolname, nspname, 'USAGE')= true
            AND nspname <> 'information_schema'
            AND nspname !~~ 'pg_%') as schemas
    FROM
        pg_catalog.pg_roles r
    JOIN
        pg_catalog.pg_user u on(r.rolname=u.usename)
    WHERE
        usename !~ 'postgres'
    ORDER BY 
        1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      相关资源
      最近更新 更多