Vous n'êtes pas identifié(e).
Pages : 1
Bonjour a tous,
j'ai une interface php qui doit pouvoir faire des backup de base de donnée.
Pour ce faire je me suis donc naturellement orienté vers l'utilitaire pg_dump.
Pour le mot de passe, j'ai vue qu'il existait un fichier .pgpass
http://docs.postgresql.fr/9.0/libpq-pgpass.html
j'ai donc tout d'abort testé de mettre le .pgpass dans mon home (je suis root)
voici le fichier pgpass
localhost:5432:*:postgres:monMotDePasse
mais malheuresement cela ne fonctionne pas
psql -U postgres
psql: FATAL: authentification par mot de passe échouée pour l'utilisateur « postgres »
mot de passe récupéré dans le fichier fichier « /root/.pgpass »
Je pense que postgres n'arrive pas a acceder au fichier (vue qu'il est dans /root)
Donc comment faire pour placé le pgpass a un autre emplacement ?
(j'ai bien vue que la variable PGPASSFILE permettait ceci, mais comment la modifier ? )
Merci d'avance pour votre aide
Dernière modification par hannibal (24/06/2011 18:32:12)
Hors ligne
Quel utilisateur unix exécute la commande pg_dump ?
Guillaume.
Hors ligne
mon utilisateur apache2 (son accès est bien sécurisé )
(il execute un script qui fait le pg_dump via la commande sudo )
Dernière modification par hannibal (24/06/2011 19:53:54)
Hors ligne
Donc ce n'est pas apache2 qui exécute la commande mais l'utilisateur pour qui il essaie de se faire passer. C'est cet utilisateur qui doit avoir le fichier .pgpass dans son répertoire personnel.
Guillaume.
Hors ligne
non, je ne crois pas, car sudo donne les droit root mais l'utilisateur qui utilise sudo ne devient pas root.
( et comme je l'ai dit plus haut, si je place mon pgpass dans mon /root , cela ne fonctionne pas )
Hors ligne
non, je ne crois pas, car sudo donne les droit root mais l'utilisateur qui utilise sudo ne devient pas root.
Si. Il le devient temporairement, le temps de l'exécution de la commande. Le fichier /root/.pgpass a bien les droits 600 ?
Guillaume.
Hors ligne
Oh, et pour infos, un .pgpass dans mon /root fonctionne parfaitement. Évidemment, ce fichier a les droits 600, a pour propriétaire et groupe root et le répertoire personnel de mon utilisateur root est bien /root.
Guillaume.
Hors ligne
bon j'ai avancé, j'ai créé le fichier .pgpass dans le home de mon user apache et maintenant sur je fait un
su -c "/usr/local/pgsql/bin/pg_dump --create --inserts -U postgres toto" apache2
Sa fonctionne nickel, par contre, dans mon fichier php je vais ceci:
echo shell_exec('sudo /usr/local/pgsql/bin/pg_dump --create --inserts -U postgres toto');
Et la j'ai rien pas un message d'erreur, rien ......
Hors ligne
Bon tu dois avoir raison, si je vire mon sudo sa fonctionne ....
donc pourquoi sa ne fonctionne pas ????
aucune idée voici les droits sur mon fichier .pgpass dans mon /root
-rw------- 1 root root 38 24 juin 18:27 .pgpass
Hors ligne
Une possibilité serait que le pg_dump ne s'exécute pas en tant qu'utilisateur root. Ça dépend en fait de la configuration de sudo. Ou alors le répertoire personnel de root n'est pas /root sur ton système.
Guillaume.
Hors ligne
Une possibilité serait que le pg_dump ne s'exécute pas en tant qu'utilisateur root. Ça dépend en fait de la configuration de sudo.
Je peux faire quoi pour ça ?
De toute façon même une connexion basique ( psql -U postgres), le fichier pgpass de mon /root ne fonctionne pas donc .....
Je pense que si on trouve pour cela, on trouve pour tout
sinon le home de mon root est bien /root
Hors ligne
Je peux faire quoi pour ça ?
En n'utilisant pas sudo.
Guillaume.
Hors ligne
oui, je me doute, mais dans ce cas le fichier ne peux plus etre dans /root
Hors ligne
Non, il devra être dans le répertoire personnel de l'utilisateur apache.
Guillaume.
Hors ligne
bon, j'ai fait sans sudo
Merci pour ton aide
Hors ligne
Pages : 1