PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menghitung semua peran yang diaktifkan untuk semua pengguna di PostgreSQL?

Triknya adalah membuat kueri rekursif atas relasi katalog sistem pg_roles dan 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;

Ini memberikan tampilan semua pengguna dalam sistem dengan semua keanggotaan peran yang diwarisi. Bungkus ini agar utilitas ini selalu berguna.

Semangat, Patrick



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 9.5:Sembunyikan kata sandi dari koneksi dblink

  2. Konsep Oracle Ketersediaan Tinggi di PostgreSQL

  3. Cara Mengaktifkan TimescaleDB pada Database PostgreSQL yang Ada

  4. Menggunakan psql untuk terhubung ke PostgreSQL dalam mode SSL

  5. 2ndQuadrant Deutschland – Tawar-menawar Pembukaan Pelatihan Khusus