È necessario comprendere che gli utenti di PostgreSQL sono per il cluster di database. @Michael già dimostra come ottenere una lista di quelli.
Quindi, a meno che non si limitino esplicitamente le autorizzazioni per un determinato database con REVOKE
e GRANT
, tutti gli utenti nel cluster dispongano di un accesso di base a qualsiasi database nel cluster.
Per determinare, se un determinato utente ha in realtà un certo privilegio ('CONNECT') per un database:
has_database_privilege(user, database, privilege)
più su privilege functions in the manual.
Per determinare tutti i privilegi specifici per una specifica banca dati :
SELECT datname, datacl
FROM pg_database
WHERE datname = 'mydb';
Si ottiene NULL
per datacl
se si applicano restrizioni specifiche.
In aggiunta a ciò è possibile limitare l'accesso al database e per utente nel file pg_hba.conf
. Questo è a un livello più basso. L'utente non può nemmeno connettersi, se pg_hba.conf
non glielo consente, anche se il database stesso consentirebbe l'accesso.
fonte
2012-01-19 13:18:03
@ Michael, grazie mille per l'aiuto. –
Prego. –