PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 12/03/2009 16:42:58

Droits d'accès utilisateur

Bonjour,

Je dois mettre en place un serveur postgresql 8.1 mutualisé (un peu comme celui de free). Mon problème est que je n'arrive pas à autoriser un utilisateur, par exemple toto, à ne voir que sa base de données (nommée aussi toto) dans phpPgAdmin.

Voici ce que j'ai fait mais qui ne marche pas :

-bash-3.2$ createuser toto -P -D -A
Enter password FOR new role:
Enter it again:
Shall the new role be allowed TO CREATE more new roles? (y/n) n
CREATE ROLE
-bash-3.2$ createdb -O toto -E LATIN1 toto
CREATE DATABASE

et voici le contenu du fichier pg_hba.conf :

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
LOCAL   sameuser        ALL             md5
LOCAL   ALL             @admins         md5
L'utilisateur postgres (autrement dit l'administrateur) peut se logguer sans problème et voir toutes les bases de données mais lorsque j'essaye de me logguer avec l'utilisateur toto j'obtiens le message d'erreur suivant dans les logs de postgres :

FATAL:  no pg_hba.conf entry FOR host "[local]", user "toto", DATABASE "template1", SSL off

Après plusieurs tentatives de modification du fichier "pg_hba.conf" je n'arrive pas à trouver comment on peut faire pour que l'utilisateur "toto" puisse voir uniquement sa base de données "toto" comme le fait parfaitement le serveur postgresql de free...

Si vous avez une idée, je suis preneur.

Merci d'avance!

Hors ligne

#2 12/03/2009 20:52:17

gleu
Administrateur

Re : Droits d'accès utilisateur

La configuration du fichier pg_hba.conf est correcte. Pas dit que la configuration de phpPgAdmin le soit. En tout cas, le message d'erreur indique bien que l'utilisateur toto essaie de se connecter au serveur template1. Et la connexion est refusée. Donc le pg_hba.conf semble bien configuré.

Attention au fait que vous pouvez empêcher un utilisateur à se connecter à autre chose que sa base, par contre il pourra toujours voir le nom des autres bases.


Guillaume.

Hors ligne

#3 13/03/2009 13:05:09

Re : Droits d'accès utilisateur

Merci Guillaume. Effectivement, il y avait une option mal configurée dans phpPgAdmin dans le config.inc.php : "only show owned databases".

Mais ça ne suffit pas : toto est quand même toujours envoyé sur template1 puisque c'est la base définie par défaut dans ce même fichier. Et vu notre mode de fonctionnement, on ne pourra pas changer ce paramètre de manière à ce que cela marche pour tous nos utilisateurs.
Nous avons donc dû modifier pg_hba.conf pour donner l'accès à tous à toutes les bases (donner l'accès à tous à template1 ne suffisait pas non plus : la connexion se faisait bien mais toto ne pouvait pas voir le contenu de la base toto).

Ainsi, toto ne voit bien que les bases dont il est propriétaire par l'intermédiaire de phpPgAdmin, même pas le nom des autres bases.
Par contre, en ligne de commande, il peut se connecter à toutes les bases...

Nous sommes restés sur ce paramètrage-là, ne voyant pas de solution permettant à la fois la bonne configuration de phpPgAdmin ET de la ligne de commande.

Hors ligne

Pied de page des forums