web-dev-qa-db-fra.com

Liste des utilisateurs PostgreSQL

Je veux obtenir une liste d'utilisateurs pour une certaine base de données dans psql - par exemple "template0". Qui sont les utilisateurs? Ou pour la base de données "template1": - qui sont les utilisateurs là-bas?

Déjà essayé:

\du+  -- no database is Listed not Users
Select * from "pg_users";  -- no database is listed
39
Arun Dambal

Les utilisateurs ne sont pas réellement "pour la base de données", ils sont pour le cluster et reçoivent des autorisations différentes pour accéder aux bases de données. Pour répertorier les utilisateurs \du devrait suffire, mais vous devez être connecté. Quelque chose comme

psql template1 -c '\du'

à partir de l'invite de ligne de commande devrait faire. (ou \du de l'invite psql lorsque vous êtes connecté à la base de données).

76

Vous devez comprendre que dans PostgreSQL, les utilisateurs sont par cluster de base de données . @Michael montre déjà comment obtenir une liste de ceux-ci.

Ainsi, sauf si vous limitez explicitement les autorisations pour une base de données particulière avec REVOKE et GRANT, tous les utilisateurs du cluster ont un accès de base à n'importe quelle base de données du cluster.

Pour déterminer si un utilisateur spécifique a réellement un certain privilège ('CONNECT') pour une base de données:

has_database_privilege(user, database, privilege)

En savoir plus sur fonctions de privilège dans le manuel .

Pour déterminer tous les privilèges spécifiques pour une base de données spécifique :

SELECT datname, datacl
FROM   pg_database
WHERE  datname = 'mydb';

Vous obtenez NULL pour datacl si aucune restriction spécifique ne s'applique.


En plus de cela, vous pouvez restreindre l'accès par base de données et par utilisateur dans le pg_hba.conf fichier. C'est à un niveau inférieur. L'utilisateur ne peut même pas se connecter si pg_hba.conf ne le laissera pas, même si la base de données elle-même permettrait l'accès.

13
Erwin Brandstetter

Pour répertorier les rôles/utilisateur

sélectionnez rolname dans pg_roles;

4
Sachin Gupta