Biraz \ l + komut sadece veritabanına bağlanmak için izin/ayrıcalığa sahip kullanıcıların bazı görüntüler ise garip. Kendimi bir PostgreSQL 8.4 kurulumunda tekrarlayamadım (Ubuntu 10.04 LTS). Hangi sürümü kullanıyorsunuz?
SELECT datname as "Relation", datacl as "Access permissions" FROM pg_database WHERE datname = 'databasename';
sadece yapabildin bir kullanıcıyı kontrol etmek isterseniz:
Neyse
, belki de kullanıcı doğru ayrıcalıklarına sahip olup olmadığını anlamak o belirli veritabanı için ve bundan ACL'lere tutan tabloyu kontrol edebilir Bunun gibi bir şey yapın:
SELECT * FROM has_database_privilege('username', 'database', 'connect');
Açıklamalar/ayrıcalıklar nasıl yorumlanır? ayrıcalıkları böyle okunacak şunlardır:
user = privileges/granted by
belirtilmemesi kullanıcı KAMU ayrıcalığı, yani bütün rolleri verilir anlamına gelir. Örneğin ayrıcalık =Tc/postgres
sonra tüm roller bağlamak ve söz konusu veritabanında geçici tablolar yaratabilir ve bu ayrıcalığı verilmiş postgres
kullanıcıysa.
PostgreSQL sitesinde http://www.postgresql.org/docs/9.2/static/sql-grant.html farklı ayrıcalıkları açıklayan PostgreSQL yerinde bir sinopsis yoktur.
rolename=xxxx -- privileges granted to a role
=xxxx -- privileges granted to PUBLIC
r -- SELECT ("read")
w -- UPDATE ("write")
a -- INSERT ("append")
d -- DELETE
D -- TRUNCATE
x -- REFERENCES
t -- TRIGGER
X -- EXECUTE
U -- USAGE
C -- CREATE
c -- CONNECT
T -- TEMPORARY
arwdDxt -- ALL PRIVILEGES (for tables, varies for other objects)
* -- grant option for preceding privilege
/yyyy -- role that granted this privilege
Vay bu soru eski ve hiç bir cevap seçmedim. Sanırım bunun nedeni daha fazla bir şey arıyordum. Buna bir süredir bakmadım, bu yüzden yanlış mı diye özür dilerim. Pg_hba.conf dosyasının, kullanıcıların bir sunucuya bağlanmasına izin verdiğine inanıyorum. Bu nedenle, mümkün olacak kilitli henüz veritabanları '\ L' komutu hiç bilmek mümkün olmayabilir neredeyse izin herkes tarafından erişilmesi. – vol7ron