psql:无法连接到服务器...服务器是否在主机上运行,并且在端口5432上接受TCP/IP连接?

5

我知道这是一个流行的问题。我已经尝试了类似threads中建议的所有方法。我正在尝试远程连接到位于Azure Windows Server 2012机器上的PostgreSQL数据库。我尝试了以下操作...

postgresql.conf

listen_addresses = '*'

pg_hba.conf

# IPv4 local connections:
host    all             all             0.0.0.0/0            md5

防火墙

新的入站规则(防火墙)协议和端口 > 协议类型 > TCP

本地端口 > 5432 远程端口 > 所有

获取远程计算机的IP地址

我从Azure仪表板上复制,也按照远程桌面连接顶部指示的方式执行。

enter image description here

来自本地计算机的CMD

然后从本地计算机尝试了以下操作。

psql -U postgres -h 13.xx.xx.xx 

错误信息。

psql: 无法连接服务器:连接超时 (0x0000274C/10060) 服务器是否在主机“13.xx.xx.xx”上运行,并且正在接受端口5432上的TCP/IP连接?

我不确定还应该做什么。


在更改了listen_addressespg_hba.conf设置后,您是否重新启动 Postgres? pg_hba.conf更改仅需要重新加载,但是listen_addresses更改需要重新启动。 您可以通过运行select current_setting('listen_addresses');从Postgres验证更改。如果Azure使用PG10,则可以通过select * from pg_catalog.pg_hba_file_rules();检查您的pg_hba设置。 - bma
是的,您需要重新启动psql。如果仍然无法工作,则可能是防火墙问题。请参考我的答案。 - Shui shengbao
1个回答

5

在您修改配置文件后,需要重新启动它。您可以使用netstat -ant|findstr 5432进行检查。它应该听起来像下面这样:

C:\Users\shui>netstat -ant|findstr 5432
  TCP    0.0.0.0:5432           0.0.0.0:0              LISTENING       InHost
  TCP    [::]:5432              [::]:0                 LISTENING       InHost

看起来是防火墙问题。您需要在Azure NSG上打开5432端口。

enter image description here

我在我的实验室测试过,对我有效。

enter image description here


感谢善良的天才@Shengbao Shui - MSFT。这就是我缺失的部分。这对我有用。 - Noah Huntington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接