我有Postgres的流浪汉机器。我需要使用一些外部工具(例如pgmodeler,keetle)连接这个数据库。 所以我开始使用隧道:
ssh -L 5433:127.0.0.1:5432 vagrant@192.168.56.140 -i puphpet/files/dot/ssh/id_rsa
然后我尝试使用命令登录:
psql -h 127.0.0.1 -p 5433 -U postgres postgres
我收到错误:
FATAL: password authentication failed for user "postgres"
我有点困惑,因为它曾经工作,现在它没有。我试图设置用户密码,但它没有用。我应该在哪里寻找问题?
答案 0 :(得分:1)
您需要调整postgres服务器的pg_hba.conf
文件,以告知postgres允许哪些用户的连接。在类似debian的发行版中,您可以在/etc/postgresql/9.1/main/pg_hba.conf
中找到此文件。
在使用vagrant进行开发时,我通常使用pg_hba.conf中的以下条目,允许所有用户在没有密码的情况下从任何地方连接
# IPv4 connections from everywhere:
host all all 0.0.0.0/0 trust
永远不要在生产服务器上使用此行
在我的Vagrantfile中有以下行转发端口
Vagrant.configure(2) do |config|
# more stuff
config.vm.network "forwarded_port", guest: 5432, host: 5433, host_ip: "127.0.0.1"
end
不要忘记将host_ip设置为localhost,否则postgres会绑定到本地计算机的所有网络接口。