Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/10/2007, 11h39   #1
Invité régulier
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 9
Points : 9
Par défaut Utilisation d'une utilisateur avec postgres

Je suis en train d'importer une base postgres et ai les pires difficultés pour la faire fonctionner.

Je n'ai pu pour l'instant la faire fonctionner qu'en me connectant avec l'administrateur de postgres. J'ai pourtant créé un utilisateur pour la base, mais il ne peut pas être utilisé. Lorsque je l'indique, il me répond :
Citation:
E_WARNING - #80 - /var/www/vhosts/domaine.name/httpdocs/class/db.php - pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "destin_user", database "destin", SSL off
Que dois-je mettre dans le pg_hba.conf ?

Par ailleur, la base une fois importée appartient à postgre et je ne vois nulle part l'appartenance à cet utilisateur. Cela peut-il géner l'accès à la base ?

Merci.
pem1996 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 12h03   #2
Invité régulier
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 9
Points : 9
Par défaut Complément

Après avoir ajouté au fichier pg_hba.conf les deux lignes suivantes,
Code :
1
2
host   ALL          ALL         127.0.0.1         255.255.255.255   trust
LOCAL   ALL          ALL                                            trust
j'arrive à me connecter semble-t-il, mais l'erreur maintenant est lors des requêtes :
Citation:
E_WARNING - #174 - /var/www/vhosts/domaine.name/httpdocs/class/db.php - pg_query() [function.pg-query]: Query failed: ERROR: permission denied for relation Lan
PS : en modifiant "trust" par "password", même résultat.

Merci.
pem1996 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 12h12   #3
Membre habitué
 
Inscription : août 2007
Messages : 128
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 128
Points : 146
Points : 146
pg_hba.conf ne permet que d'autoriser la connexion à une ou plusieurs bases de données. Elle ne gère pas les droits en dehors de la connexion.

La base ayant été créé par postgres, par défaut, tous les objets lui appartiennent. Ton nouvel utilisateur n'a donc aucun droit dessus.

Deux solutions :
1. tu donnes le droit à cet utilisateur pour chaque objet (autrement dit, c'est galère)
2. tu supprimes cette base, tu la recrées en lui donnant comme propriétaire ton nouvel utilisateur, tu ré-importes ta base (en espérant que le dump ne va pas donner les objets à l'utilisateur postgres) et c'est bon.

Dernier mot sur le pg_hba.conf. En indiquant trust comme méthode d'authentification, toute personne qui souhaite se connecter n'a besoin que du nom de l'utilisateur. postgres est généralement l'admin par défaut. Donc n'importe qui qui a un accès réseau à ce serveur peut se connecter en superutilisateur sur la base de données. Autrement dit, tout le monde peut faire les pires choses sur tes données.
gleu_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 14h06   #4
Invité régulier
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 9
Points : 9
Va pour la méthode 1 ...
D'office la base est créée avec postgre en owner de 'public'. Je ne suis pas sûr, mais il me semble bien que postgre est aussi utilisé dans le dump comme propriétaire ou utilisateur des tables.

Pour changer les droits de l'utilisateur, c'est bien avec la requête
Code :
GRANT ALL PRIVILEGES ON "table" TO PUBLIC, "user";
pour chaque table ?
Quant aux fonctions, etc., il n'y a pas de droits à attribuer ?


Je me doute du pb avec 'trust', c'est pourquoi je l'ai remplacé par 'password'.

Merci.
pem1996 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 14h37   #5
Membre habitué
 
Inscription : août 2007
Messages : 128
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 128
Points : 146
Points : 146
Il faut utiliser GRANT pour chaque objet : table, séquence, fonction, schéma.
Le mieux est de lire la partie sur les droits (http://www.postgresql.org/docs/8.2/i...rivileges.html) et la page de référence sur GRANT (http://www.postgresql.org/docs/8.2/i...sql-grant.html).
gleu_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 17h18   #6
Invité régulier
 
Inscription : octobre 2007
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 34
Points : 9
Points : 9
Au lieu de GRANT, j'ai trouvé dans la doc la commande ALTER TABLE qui semble recommandée et permet de changer le propriétaire :

Code :
ALTER TABLE table OWNER TO new owner
Je viens de changer le propriétaire des tables et views (les séquences étaient avec le bon propriétaire). Les erreurs que j'avais ont disparues. Par contre, je ne vois pas de propriétaire aux fonctions dans phpPgAdmin, c'est normal ?

Merci.
pem1996 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 19h04   #7
Membre habitué
 
Inscription : août 2007
Messages : 128
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 128
Points : 146
Points : 146
ALTER TABLE te permet de modifier le propriétaire et c'est une bonne solution à ton problème. Il va falloir faire de même pour les séquences et les fonctions. Le propriétaire n'est peut-être pas affiché par phpPgAdmin mais il y en a un, c'est certain.
gleu_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h12.


 
 
 
 
Partenaires

Hébergement Web