无法使用MD5方法连接到主机上运行在VM上的Postgres

Hug*_*own 11 postgresql vagrant postgresql-9.1

我有一个使用Vagrant设置的VM,其上运行Postgres(在端口5432上),转发到主机上的端口8280.

我已经为默认用户设置了密码,我可以在本地连接就好了.

我一直试图通过端口8280从主机设置访问权限,而我一直无法使用'MD5'作为信任方法.

我已经开始postgresql.conf收听所有地址:

# postgresql.conf
listen_addresses = '*'
Run Code Online (Sandbox Code Playgroud)

我配置pg_hab.conf如下:

# pg_hab.conf
#TYPE   DATABASE  USER  CIDR-ADDRESS  METHOD
host    all       all   0.0.0.0/0     md5
Run Code Online (Sandbox Code Playgroud)

使用所有这些设置,如果我从主机运行以下命令:

psql --host=127.0.0.1 --port=8280 --username=postgres -d mydb -c '\l'
Run Code Online (Sandbox Code Playgroud)

我被提示输入密码,然后我得到:

psql: FATAL:  password authentication failed for user "postgres"
Run Code Online (Sandbox Code Playgroud)

如果我然后将METHOD从'md5'更改为'trust',我就不会要求输入密码,我可以按预期连接.我的问题是 - 为什么我不能使用'md5'连接,这是我想要做的?我知道我输入的密码是正确的(我已经更改了),但由于某种原因它无法正常工作.

Gui*_*lla 25

我有同样的问题.问题出在主机端,基本上防火墙阻塞了我正在使用的端口.所以这就是我所做的(我使用的是OSX Mavericks)

  1. 打开端口(主机)

    sudo ipfw add 7000 allow tcp from any to any dst-port 7001

  2. 修改Vagrantfile以允许端口转发

    config.vm.network "forwarded_port", guest: 5432, host: 7001

  3. 编辑postgresql.conf(访客)

    listen_addresses = '*'

  4. 编辑pg_hba.conf(你可能想要更好地调整它)

    host all all 0.0.0.0/0 md5

  5. 现在,从主机连接正常使用端口(在我的情况下为7001)和'localhost'作为主机地址


Cra*_*ger 0

您需要为该用户设置密码postgres。默认情况下没有,所以无法连接。

ALTER USER postgres PASSWORD 'somepassword';
Run Code Online (Sandbox Code Playgroud)

您的本地连接可能可以正常工作,因为它们使用带有peer身份验证的 unix 套接字,而不是 TCP/IP。如果您使用:

psql -h 127.0.0.1 -U postgres postgres
Run Code Online (Sandbox Code Playgroud)

在虚拟机上,您可能会发现这也失败了,因为您现在实际上正在测试基于 TCP/IP 的连接。