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. मैं विंडोज़ पर PostgreSQL के लिए केवल क्लाइंट टूल्स कैसे स्थापित करूं?

  2. क्या पोस्टग्रेज में एक पंक्ति के पुराने संस्करण तक पहुंचना संभव है जिसे खाली नहीं किया गया है?

  3. सिंक से बाहर होने पर पोस्टग्रेज के प्राथमिक कुंजी अनुक्रम को कैसे रीसेट करें?

  4. pgbouncer के लिए कनेक्शन थ्रूपुट कैसे बढ़ाएं?

  5. PostgreSQL में रेडियन () फ़ंक्शन कैसे काम करता है