|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité régulier
![]() Inscription : octobre 2007 Messages : 34 ![]() |
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:
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. |
|
|
|
00
|
|
|
#2 | |||
|
Invité régulier
![]() Inscription : octobre 2007 Messages : 34 ![]() |
Après avoir ajouté au fichier pg_hba.conf les deux lignes suivantes,
Code :
Citation:
Merci. |
|||
|
|
00
|
|
|
#3 |
|
Membre habitué
![]() Inscription : août 2007 Messages : 128 ![]() |
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. |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : octobre 2007 Messages : 34 ![]() |
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"; 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. |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Inscription : août 2007 Messages : 128 ![]() |
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). |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : octobre 2007 Messages : 34 ![]() |
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 :
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. |
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Inscription : août 2007 Messages : 128 ![]() |
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.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com