Debe comprender que en PostgreSQL los usuarios son por grupo de base de datos. @Michael ya demuestra cómo obtener una lista de esos.
Por lo tanto, a menos que restrinja explícitamente los permisos para bases de datos específicas con REVOKE
y GRANT
, todos los usuarios del clúster tienen acceso básico a cualquier base de datos del clúster.
Para determinar, si un usuario específico en realidad tiene un cierto privilegio ('CONNECT') para una base de datos:
has_database_privilege(user, database, privilege)
Más sobre privilege functions in the manual.
Para determinar todos los privilegios específicos para una base de datos específica :
SELECT datname, datacl
FROM pg_database
WHERE datname = 'mydb';
Se obtiene NULL
para datacl
si no se aplica ninguna restricción específica.
Además de que puede restringir el acceso por base de datos y por usuario en el archivo pg_hba.conf
. Eso está en un nivel inferior. El usuario no puede ni siquiera conectarse, si pg_hba.conf
no lo permite, incluso si la base de datos en sí permitiría el acceso.
@ Michael, muchas gracias por la ayuda. –
De nada. –