Liste des utilisateurs de 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?

Déjà essayé:

du+  -- no database is Listed not Users
Select * from "pg_users";  -- no database is listed
36
demandé sur Nakilon 2012-01-19 16:57:05

3 réponses

les utilisateurs ne sont pas réellement, "pour la base de données", ils sont pour le cluster et sont donnés des permissions différentes pour accéder aux bases de données. À la liste des utilisateurs \du devrait faire, mais vous devez être connectés. Quelque chose comme

psql template1 -c '\du'

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

73
répondu Michael Krelin - hacker 2012-01-19 13:00:50

vous devez comprendre que dans PostgreSQL les utilisateurs sont par grappe de bases de données. @Michael démontre déjà comment obtenir une liste de ceux-ci.

donc, sauf si vous restreignez explicitement les permissions pour une base de données particulière avec REVOKE et GRANT, tous les utilisateurs du cluster ont accès à une base de données dans le cluster.

pour déterminer si un utilisateur possède en fait un certain privilège ('CONNECT') pour un 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 un base de données:

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

Vous obtenez NULLdatacl si aucune restriction particulière ne s'applique.


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

13
répondu Erwin Brandstetter 2012-01-19 13:23:48

Pour la liste des rôles d'utilisateur/

sélectionner rolname de pg_roles;

4
répondu Sachin Gupta 2017-08-23 09:47:58