我有一个使用 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)
打开端口(主机)
sudo ipfw add 7000 allow tcp from any to any dst-port 7001
修改 Vagrantfile 以允许端口转发
config.vm.network "forwarded_port", guest :5432,主机:7001
编辑 postgresql.conf(访客)
listen_addresses = '*'
编辑
pg_hba.conf
(您可能想要更好地调整它)host all all 0.0.0.0/0 md5
现在,从主机正常连接使用端口(在我的例子中是 7001)和“本地主机”作为主机地址
关于postgresql - 无法使用 MD5 方法从主机连接到在 VM 上运行的 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14139017/