Impossible de se connecter à Postgresql fonctionne sur VM à partir de la machine hôte à l'aide de MD5 méthode
J'ai une VM mis en place avec Vagrant qui a Postgres tourne sur elle (sur le port 5432), transféré au port 8280 sur la machine hôte.
J'ai mis le mot de passe pour l'utilisateur par défaut et je peux vous connecter localement à l'amende juste.
J'ai essayé de mettre en place l'accès à partir de la machine hôte sur le port 8280, et j'ai été incapable de le faire fonctionner avec 'MD5' la fiducie méthode.
J'ai mis en place postgresql.conf
à écouter sur toutes les adresses:
# postgresql.conf
listen_addresses = '*'
et j'ai configuré le pg_hab.conf
comme suit:
# pg_hab.conf
#TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 0.0.0.0/0 md5
Avec tous ces paramètres, si je lance la commande suivante à partir de mon ordinateur hôte:
psql --host=127.0.0.1 --port=8280 --username=postgres -d mydb -c '\l'
Je suis invité pour le mot de passe, puis-je obtenir:
psql: FATAL: password authentication failed for user "postgres"
Si je puis changer la MÉTHODE de " md5 "à la" confiance " je ne suis pas demandé un mot de passe et je peux me connecter comme prévu. Ma question est, pourquoi ne puis-je pas vous connecter à l'aide de 'md5', qui est ce que je veux être capable de faire? Je sais que le mot de passe, je suis saisie est correcte (j'ai changé), mais pour quelque raison il ne fonctionne pas.
Vous devez vous connecter pour publier un commentaire.
J'ai eu exactement le même problème. La question a été sur le côté hôte, fondamentalement, le pare-feu bloque le port que j'ai été à l'aide. C'est donc ce que j'ai fait (j'utilise OSX Mavericks)
Ouvrir le port (Hôte)
sudo ipfw add 7000 allow tcp from any to any dst-port 7001
Modifier Vagrantfile afin de permettre le transfert de ports
config.vm.network "forwarded_port", guest: 5432, host: 7001
Modifier postgresql.conf (Invité)
listen_addresses = '*'
Modifier
pg_hba.conf
(vous pouvez ajuster ce mieux)host all all 0.0.0.0/0 md5
Maintenant, à partir de l'hôte de se connecter normalement, en utilisant le port (dans mon cas, 7001) et "localhost" comme adresse de l'hôte
host all all 10.0.2.2/32 trust
- remplacertrust
par la méthode que vous préférezvagrant provision
donc eu à fairevagrant destroy
etvagrant up
.Vous devez définir un mot de passe pour le
postgres
de l'utilisateur. Il ne l'est pas par défaut, de sorte que vous ne peut pas se connecter.Vos connexions locales probablement parce qu'ils utilisent des sockets unix avec
peer
d'authentification, pas de TCP/IP. Si vous utilisez:sur la machine virtuelle, vous trouverez probablement que cela échoue aussi, parce que vous êtes en train de tester le protocole TCP/IP, les connexions maintenant.