39 votes

Liste des utilisateurs PostgreSQL

Je souhaite obtenir une liste d'utilisateurs pour une certaine base de données en 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

77voto

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

psql template1 -c '\du'

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

13voto

Erwin Brandstetter Points 110228

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

Ainsi, à moins que vous ne restreigniez explicitement les autorisations pour une base de données particulière à l'aide de la fonction REVOKE y GRANT Tous les utilisateurs de la grappe ont un accès de base à n'importe quelle base de données de la grappe.

Pour déterminer si un utilisateur dispose d'un certain privilège ('CONNECT') pour une base de données :

has_database_privilege(user, database, privilege)

Plus d'informations fonctions privilégiées dans le manuel .

Pour déterminer tous les privilèges spécifiques d'un base de données :

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

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


En outre, vous pouvez restreindre l'accès par base de données et par utilisateur dans la section 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 laisse pas faire, même si la base de données elle-même autorise l'accès.

5voto

Sachin Gupta Points 1095

Pour dresser la liste des rôles/utilisateurs

select rolname from pg_roles ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X