PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

मैं किसी भूमिका के लिए सभी डेटाबेस और ऑब्जेक्ट ग्रांट की समीक्षा कैसे कर सकता हूं?

कॉलम relacl सिस्टम कैटलॉग का pg_class विशेषाधिकारों पर सभी सूचनाएं शामिल हैं।

स्कीमा में उदाहरण डेटा public postgres . के स्वामित्व में है newuser . को अनुदान के साथ :

create table test(id int);
create view test_view as select * from test;

grant select, insert, update on test to newuser;
grant select on test_view to newuser;

pg_class को क्वेरी करना :

select 
    relname, 
    relkind, 
    coalesce(nullif(s[1], ''), 'public') as grantee, 
    s[2] as privileges
from 
    pg_class c
    join pg_namespace n on n.oid = relnamespace
    join pg_roles r on r.oid = relowner,
    unnest(coalesce(relacl::text[], format('{%s=arwdDxt/%s}', rolname, rolname)::text[])) acl, 
    regexp_split_to_array(acl, '=|/') s
where nspname = 'public'
and relname like 'test%';

  relname  | relkind | grantee  | privileges 
-----------+---------+----------+------------
 test      | r       | postgres | arwdDxt      <- owner postgres has all privileges on the table
 test      | r       | newuser  | arw          <- newuser has append/read/write privileges
 test_view | v       | postgres | arwdDxt      <- owner postgres has all privileges on the view
 test_view | v       | newuser  | r            <- newuser has read privilege
(4 rows)

टिप्पणियाँ:

  • coalesce(relacl::text[], format('{%s=arwdDxt/%s}', rolname, rolname)) - relacl . में शून्य इसका मतलब है कि मालिक के पास सभी विशेषाधिकार हैं;
  • unnest(...) acl - relacl aclitem . की एक सरणी है , एक उपयोगकर्ता के लिए एक सरणी तत्व;
  • regexp_split_to_array(acl, '=|/') s - विभाजित aclitem में:s[1] उपयोगकर्ता नाम, s[2] विशेषाधिकार;
  • coalesce(nullif(s[1], ''), 'public') as grantee - खाली उपयोगकर्ता नाम का अर्थ है public

व्यक्तिगत उपयोगकर्ता या विशिष्ट प्रकार के संबंध या अन्य स्कीमा, आदि का चयन करने के लिए क्वेरी को संशोधित करें...

दस्तावेज़ीकरण में पढ़ें:

इसी तरह आप स्कीमा पर दिए गए विशेषाधिकारों के बारे में जानकारी प्राप्त कर सकते हैं (स्तंभ nspacl pg_namespace . में ) और डेटाबेस (datacl pg_database . में )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टग्रेज LIKE '...%' अनुक्रमणिका का उपयोग नहीं करता है

  2. Django ORM में PostgreSQL सरणी फ़ील्ड को कैसे मैप करें?

  3. एमएस एक्सेस के लिए पोस्टग्रेज

  4. डॉकर पोस्टग्रेज के लिए स्क्रिप्ट में यूजर/डेटाबेस कैसे बनाएं

  5. पोस्टग्रेज - लापता डेटा के लिए 0 गिनती के साथ पंक्तियों को कैसे वापस करें?