Tidak ada tampilan seperti itu di luar kotak, tetapi data yang diperlukan untuk membuatnya ada di katalog sistem:
http://www.postgresql.org/docs/current/static/catalogs.html
Misalnya, ada relacl
bidang di pg_class
:
select oid::regclass, relacl from pg_class;
Ada field serupa di katalog lain, yaitu typacl
di pg_type
dan proacl
di pg_proc
.
Anda mungkin ingin menggunakan dua katalog lagi, yaitu pg_authid
untuk mengetahui peran mana yang memiliki hak pengguna super, dan pg_auth_members
untuk mengetahui siapa yang memiliki peran apa.
(pg_default_acl
hanya digunakan selama pembuatan objek, jadi tidak berguna.)
Ada beberapa fungsi internal terkait aklitem yang mungkin berguna dalam membuat tampilan. Anda dapat mencantumkannya di psql
seperti ini:
\df+ *acl*
Khususnya aclexplode()
. Contoh berikut semoga cukup untuk membantu Anda memulai:
select oid::regclass,
(aclexplode(relacl)).grantor,
(aclexplode(relacl)).grantee,
(aclexplode(relacl)).privilege_type,
(aclexplode(relacl)).is_grantable
from pg_class
where relacl is not null;
Itu dapat dioptimalkan dengan memperluas baris acl terlebih dahulu, mis.:
select oid::regclass,
aclitem.grantee
from (select oid, aclexplode(relacl) as aclitem from pg_class) sub
Ini akan membawa Anda langsung ke hasil yang diinginkan.
Sejauh yang saya ketahui, itu sama baiknya dengan menggunakan alat bawaan. (Tentu saja, Anda dapat menulis set operator Anda sendiri di C jika Anda ingin mencoba mengoptimalkannya lebih lanjut.)
Sehubungan dengan pertanyaan tambahan Anda, saya khawatir mereka hanya dapat dijawab oleh segelintir orang di dunia, alias pengembang inti itu sendiri. Mereka lebih sering nongkrong di daftar peretas pg daripada di sini.