【问题标题】:Cannot connect to Postgres running on VM from host machine using MD5 method无法使用 MD5 方法从主机连接到在 VM 上运行的 Postgres
【发布时间】:2013-01-03 12:31:31
【问题描述】:

我有一个使用 Vagrant 设置的 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"

如果我随后将 METHOD 从“md5”更改为“信任”,则不会要求我输入密码,并且可以按预期连接。我的问题是 - 为什么我不能使用“md5”连接,这是我想要做的?我知道我输入的密码是正确的(我已更改),但由于某种原因它不起作用。

【问题讨论】:

    标签: postgresql postgresql-9.1 vagrant


    【解决方案1】:

    我遇到了同样的问题。问题出在主机端,基本上防火墙阻止了我使用的端口。所以这就是我所做的(我使用的是 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' 作为主机地址

    【讨论】:

    • 谢谢! pg_hab.conf 中需要调整什么?
    • 好吧,“host all all 0.0.0.0/0 md5”将允许来自任何主机的连接,这就是为什么我说你可能想将其更改为更具限制性的内容。
    • 只允许 Vagrant 主机你可以使用host all all 10.0.2.2/32 trust - 用你喜欢的方法替换trust
    • 对于那些从谷歌登陆的人;我还发现我的端口转发没有通过vagrant provision 生效,所以不得不做vagrant destroyvagrant up
    【解决方案2】:

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

    ALTER USER postgres PASSWORD 'somepassword';
    

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

    psql -h 127.0.0.1 -U postgres postgres
    

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

    【讨论】:

    • 谢谢克雷格,但你可能没有在我的最后一段中看到 - 我已经设置了密码,我可以使用它连接到数据库,所以我知道它是正确的。
    • @HugoRodger-Brown ...在这种情况下,我会检查我是否真的连接到我认为的数据库。尝试在客户机中启用详细日志记录并在日志中查找身份验证错误,或者在客户机中使用 tcpdump 并跟踪流量。
    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2011-09-03
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多