listar - Listado de usuarios de PostgreSQL
postgresql pdf (3)
Debe comprender que en PostgreSQL los usuarios son por clúster 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 una determinada base de datos 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 realmente tiene un cierto privilegio (''CONNECT'') para una base de datos:
has_database_privilege(user, database, privilege)
Más sobre las funciones de privilegios en el manual .
Para determinar todos los privilegios específicos para una base de datos específica:
SELECT datname, datacl
FROM pg_database
WHERE datname = ''mydb'';
Obtiene NULL
para datacl
si no se aplican restricciones específicas.
Además de eso, 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 ni siquiera puede conectarse, si pg_hba.conf
no lo permite, incluso si la base de datos en sí lo permite.
Quiero obtener una lista de usuarios para una determinada base de datos en psql, por ejemplo, "template0". ¿Quiénes son los usuarios? O para la base de datos "template1": - ¿quiénes son los usuarios allí?
Ya probado:
/du+ -- no database is Listed not Users
Select * from "pg_users"; -- no database is listed
Los usuarios no son en realidad "para la base de datos", son para el clúster y tienen diferentes permisos para acceder a las bases de datos. Para hacer una lista de usuarios, /du
debería hacerlo, pero debe estar conectado. Algo como
psql template1 -c ''/du''
desde el indicador de línea de comando debería hacer. (o /du
desde el indicador psql cuando está conectado a la base de datos ).
Para enumerar roles / usuario
seleccione rolname de pg_roles;