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

标签 postgresql postgresql-9.1 vagrant

我有一个使用 Vagrant 设置的虚拟机,上面运行着 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”更改为“trust”,系统不会要求我输入密码,我可以按预期进行连接。我的问题是 - 为什么我不能使用“md5”进行连接,而这是我希望能够做到的?我知道我输入的密码是正确的(我已经更改了),但由于某种原因它不起作用。

最佳答案

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

  3. 编辑 postgresql.conf(访客)

    listen_addresses = '*'

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

    host all all 0.0.0.0/0 md5

  5. 现在,从主机正常连接使用端口(在我的例子中是 7001)和“本地主机”作为主机地址

关于postgresql - 无法使用 MD5 方法从主机连接到在 VM 上运行的 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14139017/

相关文章:

vagrant - 如何设置vagrant环境变量VAGRANT_DEFAULT_PROVIDER?

sql - PostgreSQL 错误 : 42P01: relation "[Table]" does not exist

c++ - pqxx 简单代码崩溃

postgresql-9.1 - 恢复 Postgres 数据库时克服循环依赖

vagrant - 如何从另一个 virtualbox guest 访问 vagrant guest ?

linux - CoreOS Vagrant 虚拟盒 SSH 密码

sql - 将 PostgreSQL 数据分组以在输出中具有不超过 N 个值

postgresql - 在 PgAdmin 中搜索所有表

ruby-on-rails - 在多服务器环境中,如果站点不活动时间超过 1500 万,服务器将失去与 PostgreSQL 数据库的连接

sql - PostgreSQL 外键约束找不到现有键