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.