无法连接到使用MD5方法在虚拟机上运行的主机的Postgres(Cannot connect to

2019-08-05 10:29发布

我有一个VM设置与已Postgres的在其上运行流浪(端口5432),转发到端口8280的主机上。

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

我一直在试图建立通过端口8280从主机访问,我一直无法得到它与“MD5”作为信托法工作。

我已经设置了postgresql.conf监听所有地址:

# postgresql.conf
listen_addresses = '*'

和我已经配置pg_hab.conf如下:

# pg_hab.conf
#TYPE   DATABASE  USER  CIDR-ADDRESS  METHOD
host    all       all   0.0.0.0/0     md5

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

psql --host=127.0.0.1 --port=8280 --username=postgres -d mydb -c '\l'

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

psql: FATAL:  password authentication failed for user "postgres"

如果我再从“MD5”的方法更改为“信任”我不要求输入密码,并如预期我可以连接。 我的问题是 - 为什么我不能连接使用“MD5”,这是我希望能够做什么? 我知道我输入的密码是正确的(我已经改变了它),但由于某种原因它不工作。

Answer 1:

我有同样的确切问题。 问题是在主机端,基本的防火墙挡住了我使用的端口。 所以这是我做过什么(我使用OSX小牛)

  1. 打开端口(主机)

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

  2. 修改Vagrantfile为了让portforwarding

    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)和“本地主机”作为主机地址连接



Answer 2:

您需要设置的密码postgres用户。 它不会有一个默认情况下,这样你就无法连接。

ALTER USER postgres PASSWORD 'somepassword';

你的本地连接可能工作,因为他们使用的Unix套接字与peer的认证,而不是TCP / IP。 如果你使用:

psql -h 127.0.0.1 -U postgres postgres

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



文章来源: Cannot connect to Postgres running on VM from host machine using MD5 method