Postgresql 连接超时

Postgresql 连接超时

当我连接到远程服务器上的 psql 时

>psql -h {hostname}
psql: could not connect to server: Connection timed out (0x0000274C/10060). Is the server running on host "{hostname}" (194.58.98.133) and accepting TCP/IP connections on port 5432?

在服务器上:

netstat -nlp | grep 5432
tcp   0 0 0.0.0.0:5432   0.0.0.0:*  LISTEN  29609/postmaster
tcp        0      0 :::5432  :::*  LISTEN      29609/postmaster
unix  2   [ ACC ]  STREAM   LISTENING 2107633273 29609/postmaster   /tmp/.s.PGSQL.5432

服务器上没有 iptables。Ping 服务器成功。

我做错了什么?

答案1

pg_hba.conf当我的或 AWS 安全组配置不正确时,我遇到了这种错误。有很多关于如何解决这个问题的文档。例如,你可以查看下面的内容,引用自关联

错误:psql:无法连接到服务器:连接被拒绝服务器是否在主机“192.168.0.1”上运行并在端口 5432 上接受 TCP/IP 连接?

常见的原因:postmaster 或 PostgreSQL 的服务器守护进程未运行或者配置不正确。

大多数情况下,当您收到此错误时,是因为未将 PostgreSQL 配置为允许 TCP/IP 连接,或者至少不允许来自特定工作站的连接。如果您已验证确实postmaster在您尝试连接的主机上运行,​​那么以下是导致此问题的常见原因列表:

  • postgresql.conf未设置为允许 TCP/IP 连接。您需要查看listen_address配置参数。
  • postgresql.conf未设置为允许在非标准端口号上进行连接。要确定这一点,请查看port配置选项。
  • PostgreSQL 访问配置文件 ( pg_hba.conf) 中的身份验证规则未设置为允许您的用户或 IP 地址连接到该数据库。请参阅官方文档了解有关正确设置的更多信息pg_hba.conf
  • 确保没有防火墙,例如iptables阻止本地系统与远程主机建立连接的防火墙

答案2

你应该看看PostgreSQL 配置文件。要允许来自任何地方的连接,您必须设置listen_aaddresses(监听地址)到 *:

listen_addresses = '*'

配置文件应该有一个这样的条目,以允许来自您的网络的连接:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.190.0/24        md5

答案3

就我而言,由于我有一个 AWS RDS 托管实例,所以问题出在安全组规则上。

添加入站规则以允许来自我的 PC 的流量允许连接。有关更多详细信息,请参阅:https://stackoverflow.com/a/70337387/4725074

答案4

你检查过防火墙设置吗?尝试允许 5432 端口连接。例如 Ubuntu ufw:sudo ufw allow 5432

相关内容