Postgres远程连接失败,'psql: error: connection to server at {server}, port 5432 failed: Connection timed o



我的电脑上目前有一个postgres数据库。我正在linux服务器上部署一个使用该数据库的flask应用程序,需要从linux机器远程连接到我的数据库。我在linux机器上使用的命令是

psql -h 12.345.678.901 -p 5432 -U postgres

其中12.345.678.901是我的本地PC ip地址。当我这样做时,我得到错误

psql: error: connection to server at "12.345.678.901", port 5432 failed: Connection timed out
Is the server running on that host and accepting TCP/IP connections?

我想强调的是,这种联系并没有被"拒绝",它只是时间安排(与许多与此主题相关的问题不同(。我不确定这是否有助于确定根本问题。我知道这是一个非常常见的问题,但没有任何解决方案对我有效。这些解决方案包括更新pg_hba.conf、postgresql.conf、防火墙配置等。我做到了。我的pg_hba.conf文件看起来像这个

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     scram-sha-256
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256
host    all             all             ::0/0                   md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     scram-sha-256
host    replication     all             127.0.0.1/32            scram-sha-256
host    replication     all             ::1/128                 scram-sha-256
host all all 0.0.0.0/0 md5

我的postgresql.conf看起来像这个

# - Connection Settings -
listen_addresses = '*'          # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
port = 5432                     # (change requires restart)
max_connections = 100           # (change requires restart)

这些文件位于C:\Program files\PostgreSQL\14\data中。我已经手动检查了这些更改是否保存并使用psqlshell实现。在对这些文件进行了所有更改后,我也重新启动了postgres。

我已经实现的其他修复:

  • 在本地PC上设置防火墙规则,以便使用Windows Defender firewall 向入站和出站TCP/IP连接打开端口5432

  • 设置远程linux PC防火墙以允许通过端口5432与线路连接

    "sudo ufw allow 5432/tcp"&"sudo ufw允许postgres/tcp">

  • 尝试了本地PC IPv4地址和默认网关地址(老实说,我不确定该使用哪一个(

  • 为我的物理路由器设置一个规则,允许连接到端口5432

我想不出这能救我的命。任何帮助都将不胜感激。

对于其他正在努力解决这个问题的人,经过数周的挖掘,我终于找到了解决方案。您必须在postgres配置文件中使用的ip地址是ROUTER的ip地址。我试过电脑上的每一个ip地址,都没有用。只有当我打开我的互联网提供商应用程序并找到我的路由器ip时,我才终于能够连接。最重要的是,当我用ssh连接到远程服务器时,它会说"从{路由器ip地址}连接"。希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新