我尝试将我的客户端(Macbook Pro)连接到位于同一网络中另一台PC上的Postgres数据库(Ubuntu) 我可以通过pgAdmin从主机看到数据库,连接到localhost,但我无法从客户端看到。
我已允许pg_hba.conf
和postgresql.conf
我尝试通过pgAdmin从客户端连接到存储数据库的IP服务器(192.168.1.34)和端口5432
我得到了这个错误 我做错了什么?
我错过了什么
阅读建议后,我可以说: 在ubuntu机器(家庭测试服务器)上我没有防火墙。 Postgres正在运行。
我已经尝试从ubuntu控制台访问数据库:
psql -h 127.0.0.1 mydatabase postgres
并且可以连接(这意味着服务器正在运行且用户名正常)
但是如果我尝试从同一台机器访问同一个数据库,用IP更改localhost,我无法连接。
当我从服务器连接时,psql -h 127.0.0.1 mydatabase postgres
不应该与psql -h 192.168.1.34 mydatabase postgres
相同吗?
正如Alain建议的那样,也许是在环回中?
答案 0 :(得分:9)
它没有连接,所以它可能没有在正确的界面上收听或被防火墙阻止。
postgres正在运行吗?
sudo service postgresql status
postgres是否在您的LAN IP或0.0.0.0(所有接口)上侦听tcp / 5432?
netstat -anpt | grep LISTEN
它只能侦听127.0.0.1(环回),这意味着无法从Mac上访问它。
如果它没有正在侦听或正在环回,请检查postgresql.conf是否为listen_addresses:
http://www.postgresql.org/docs/9.1/static/runtime-config-connection.html
Ubuntu盒子上是否有防火墙运行?
确保至少允许从Mac的IP到tcp / 5432的入站连接。
GUFW使配置更容易,但也可以使用iptables完成。
Ubuntu设置的进一步参考:
答案 1 :(得分:9)
您可能已配置以下两个文件
pg_hba.conf的
主持人全部0.0.0.0/0 md5
postgresql.conf中
的listen_addresses = '*'
您必须检查端口5432是否已打开:http://www.yougetsignal.com/tools/open-ports/
如果不是,那么在iptables中添加一条规则:
iptables -A INPUT -s 0/0 -p tcp --dport 5432 -j ACCEPT
0/0:如果你想让任何人访问它。
您可以将其更改为特定的IP地址或IP地址范围。
答案 2 :(得分:0)
在ubuntu 17.04默认端口是路径/etc/postgresql/9.6/main中的5433检查文件postgresql.conf
答案 3 :(得分:0)
您已允许postgresql接受来自外部网络的请求。为此,您必须更改位于/etc/postgresql/{version_code}/main
的两个文件
第一个是pg_hba.conf
,打开并
将host all all ::1/128 md5
更改为host all all 0.0.0.0/0 md5
第二个是postgresql.conf
,打开并
将listen_address = 'localhost'
更改为listen_address = '*'
现在重新启动postgre服务器。
答案 4 :(得分:0)
我有同样的问题,甚至以为:
listen_address = '*'
做的时候
netstat -anpt | grep LISTEN
在5432端口上没有任何监听。
问题出在 pg_hba.conf *中:我已将服务器配置为仅接受本地(套接字)连接到每台主机的连接:
local all username 0.0.0.0/0 md5
将本地更改为主机已解决了该问题
host all username 0.0.0.0/0 md5