PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để liệt kê tất cả các vai trò đã bật cho tất cả người dùng trong PostgreSQL?

Mẹo là tạo một truy vấn đệ quy qua các quan hệ danh mục hệ thống pg_rolespg_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;

Điều này cung cấp một cái nhìn về tất cả người dùng trong hệ thống với tất cả các tư cách thành viên vai trò kế thừa. Hãy bao bọc cái này trong một khung nhìn để tiện ích này luôn hữu ích.

Chúc mừng, 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. Tạo người dùng với mật khẩu được mã hóa trong PostgreSQL

  2. Một truy vấn PostgreSQL với 'ANY' không hoạt động

  3. Làm cách nào để kết hợp nhiều tìm kiếm giữa các ngày với CrudRepository của Spring Data JPA?

  4. Sử dụng r sf ::st_write cho lược đồ không công khai trong PostgreSQL

  5. Hibernate + PostgreSQL + Loại địa chỉ mạng (inet, cdir)