Vous n'êtes pas identifié(e).
Bonjour,
Je viens de changer le nom de domaine de ma machine.
Postgres 9.1 avait été installé sur mon poste lorsque j'avait encore l'ancien nom de domaine.
Le client et le serveur sont tout les deux sur mon poste.
J'utilise des scripts en python qui lancent des commandes en ligne pour exécuter des fichiers de type .sql et importer des fichiers cartographique type shp.
Avant le changement de nom de domaine aucun mot de passe n'était demandé pour ces commandes en lignes.
Depuis le changement, un mot de passe est demandé et du coup mes outils python attendent une réponse et restent bloqués.
Je ne maitrise pas du tout ces aspects de Postgres mais je suppose qu'il faudrait pouvoir redéfinir le nom du domaine qui a été pris en compte lors de l'installation de postgres sur mon poste.
Est-ce bien cela mon problème et est-ce que c'est possible de le faire sans désinstaller et réinstaller postgres?
Merci pour votre aide
Hors ligne
Bonjour,
difficile de vous répondre en l'état, il faudrait des éléments supplémentaires, et notamment pour commencer: qu'essaie de faire exactement le script Python au moment où il demande un mot de passe (une connexion au serveur PostgreSQL) ?
Pouvez vous dire quelle est la commande qui échoue et quel est le message précisément ?
Concernant le changement du nom de domaine: quel changement avez vous fait exactement ? Pouvez vous décrire précisément le ou les changements (donnez des faux noms de domaines si vous voulez) ?
Quel est l'OS (et sa version éventuellement) ?
Il est peu probable que le problème concerne directement PostgreSQL et qu'il nécessite une quelconque réinstallation du serveur.
Éric
Hors ligne
Voici un extrait du code qui exécute mes commandes en lignes
p = subprocess.Popen(commande,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE, env=os.environ)
stdout,stderr = p.communicate()
Dans commande je passe
commande = 'psql -q -h localhost -p 5433 -U postgres -d mabase -f "monfichier.sql"'
ou
commande = 'shp2pgsql -d -I -s 2154 -g the_geom -W "latin1" "monfichier.shp" matable | psql -q -h localhost -p 5433 -U postgres -d mabase'
Mon outil ne plante pas mais il attend une réponse
Quand je lance ces commandes en ligne de commande en dehors du code je dois rentrer le mot de passe
Avant de changer de domaine je n'avais pas besoin de saisir de mot de passe
Concernant le changement de domaine:
Je suis sur Windows 7 Professionnel SP1
Mon entreprise a décidé de mettre à plat la messagerie et dans ce cadre tous les postes ont été changés de domaine
Pour ce faire je suis allé dans les propriétés système dans la fenêtre de modification du nom du domaine de l'ordinateur et j'ai choisi le bouton radio 'Membre d'un domaine' en indiquant un nom de domaine qui est commun à tous les employés.
Ensuite l'administrateur m'a changé mes droits pour que je puisse être administrateur sur ma machine
Suite à toutes ces manipulations je ne me connecte plus sur le même compte sur ma machine
Je garde mon ancien compte pendant encore 1 mois
Sur mon ancien compte je n'ai pas ce problème
Hors ligne
Ok merci pour ces précisions qui permettent d'y voir plus clair sur le type de problème rencontré.
A priori il s'agit donc d'un problème d'authentification: où sont situés les scripts Python par rapport au serveur ? Sur le même host/machine ?
Jetez un oeil sur votre fichier pg_hba.conf et notamment sur les lignes relatives au rôle postgres: voir la doc à ce sujet.
Les changements intervenus sur votre réseau font que pour le serveur le client (vos scripts) ne se présentent plus de la même manière pour lui: les conditions fixées
dans le fichier pg_hba.conf ne sont plus réunies pour autoriser l'accès.
Si vous n'arrivez pas à résoudre le problème pouvez vous donner un extrait de votre fichier pg_hba.conf, au moins les lignes concernant le rôle
postgres (sachant que l'ordre étant important l'intégralité du fichier, hors commentaires, serait mieux) ?
Éric
Hors ligne
Les scripts sont effectivement sur la même machine
Avant de poster ce message sur le forum j'étais déjà allé voir ce fichier pg_hba.conf, mais j'avoue ne pas avoir trop compris.
Ce fichier ne contient que 2 lignes non commentées
Voici un extrait de ce fichier:
# TYPE DATABASE USER ADDRESS METHOD
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
Hors ligne
Si pg_hba.conf ne contient que ces 2 lignes non commentés cela veut dire que seuls des accès par mot de passe sont autorisés.
Comme ces mots de passe ne figurent a priori pas dans le script Python (c'est rassurant ;-)) on peut supposer qu'ils se trouvent dans
le fichier des mots de passe. C'est une possibilité, il y'en a d'autres, mais c'est la plus probable.
Compte tenu des changements intervenus ce fichier ne doit plus se trouver dans l'emplacement attendu (le répertoire personnel de l'utilisateur).
L'utilisateur sous lequel s'exécutent le ou les scripts ne doit plus être le même qu'antérieurement. Il faut probablement récupérer le fichier de l'ancien compte
utilisateur et le copier au même emplacement mais pour l'utilisateur sous lequel les scripts Python sont exécutés.
Éric
Hors ligne
Merci
Je ne suis pas sur mon poste cet après-midi
Je regarde ca demain matin ....
Hors ligne
Merci mille fois!
C'était bien ca le problème
Mon nouveau fichier pgpass.conf était vide, j'ai donc récupéré l'ancien et tout fonctionne
Hors ligne
Bonjour,
Je relance le sujet car mon problème n'est pas complétement résolu...
En effet j'ai remarqué que lorsque je me reconnecte dans pgadmin, mon fichier pgpass.conf est entièrement vidé.
Pourquoi ce comportement? Et comment le contourner?
Hors ligne
Bonjour,
probablement que l'utilisateur sous lequel vous lancez pgAdmin n'est pas le même que celui qui lance les scripts qui fonctionnent.
Après avoir essuyé un échec avec pgAdmin est ce que les scripts évoqués plus haut continuent à fonctionner ?
Si oui c'est que les scripts et pgAdmin n'utilisent pas le même fichier .pgpass et que les utilisateurs sont donc différents.
Éric
Hors ligne
En fait, comme mon fichier pgpass.conf est vidé, mes scripts python restent de nouveau bloqués en attente de mot de passe.
Je peux à nouveau remplacer le fichier pgpass.conf par celui que j'avais récupéré de mon ancien compte et mon script fonctionne de nouveau....
....jusqu'à ce que je me reconnecte sur pgadmin et que le fichier soit de nouveau vidé!
Hors ligne
C'est étonnant... Je ne connais pas pgAdmin mais je serais étonné qu'il "s'amuse" à vider le fichier .pgpass au lieu d'exploiter son contenu.
D'autant plus qu'il utilise a priroi libq qui est la librairie qui exploite .pgpass.
...
Je viens de regarder rapidement la doc de pgAdmin: est ce que vous n'auriez pas décoché la case "Store password" lorsque vous avez paramétré votre connexion ?
Dans ce cas ca semble logique que pgAdmin remette à zéro l'entrée correspondante dans le fichier .pgpass. Cochez cette case pour voir.
Éric
Hors ligne
Effectivement c'est bien cela il faut cocher "Enregistrer le mot de passe" quand on se connecte dans pgadmin.
Merci
Hors ligne