कॉलम 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
।
व्यक्तिगत उपयोगकर्ता या विशिष्ट प्रकार के संबंध या अन्य स्कीमा, आदि का चयन करने के लिए क्वेरी को संशोधित करें...
दस्तावेज़ीकरण में पढ़ें:
- कैटेलॉग
pg_class
, GRANT
एसीएल सिस्टम के विवरण के साथ।
इसी तरह आप स्कीमा पर दिए गए विशेषाधिकारों के बारे में जानकारी प्राप्त कर सकते हैं (स्तंभ nspacl
pg_namespace
. में
) और डेटाबेस (datacl
pg_database
. में
)