PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да изброим всички активирани роли за всички потребители в PostgreSQL?

Номерът е да направите рекурсивна заявка върху връзките на системния каталог pg_roles и pg_auth_members :

WITH RECURSIVE membership_tree(grpid, userid) AS (
    -- Get all roles and list them as their own group as well
    SELECT pg_roles.oid, pg_roles.oid
    FROM pg_roles
  UNION ALL
    -- Now add all group membership
    SELECT m_1.roleid, t_1.userid
    FROM pg_auth_members m_1, membership_tree t_1
    WHERE m_1.member = t_1.grpid
)
SELECT DISTINCT t.userid, r.rolname AS usrname, t.grpid, m.rolname AS grpname
FROM membership_tree t, pg_roles r, pg_roles m
WHERE t.grpid = m.oid AND t.userid = r.oid
ORDER BY r.rolname, m.rolname;

Това дава изглед на всички потребители в системата с всички наследени роли. Опаковайте това в изглед, за да имате тази помощна програма винаги под ръка.

Наздраве, Патрик



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. For цикъл с име на динамична таблица в Postgresql 9.1?

  2. Как да изградите релационни таблици в двустранен пазар

  3. Typecast низ към цяло число

  4. Съхранявайте многоизмерен масив в база данни:релационен или многоизмерен?

  5. Подобрения в разделянето в PostgreSQL 11