如何从另一个网络远程连接到PostgreSQL数据库?

8 浏览
0 Comments

如何从另一个网络远程连接到PostgreSQL数据库?

我正在创建一个使用PostgreSQL数据库服务器的应用程序,该服务器在我运行的Linux(20.1 Ubuntu)机器上。然而,当Linux机器与试图连接到它的客户端不在同一网络上时,我会收到以下错误:\n服务器是否在主机xxx.xxx.xx.xx上运行,并接受端口xxxx上的TCP/IP连接?\n\n我已经在防火墙中为该端口设置了例外,并且由于在同一网络上所有工作都正常,这使我相信我的配置是正确的,我不明白我做错了什么。我已经尝试了这里的所有方法。\n我的pg_hba.conf如下所示:\nlocal replication all peer\nhost replication all 127.0.0.1/32 md5\nhost replication all ::1/128 md5\nhost all all 0.0.0.0/0 md5\nhost all all ::/0 md5\n\n我的postgresql.conf如下所示:\n# - 连接设置 -\nlisten_addresses = \'*\' # 监听的IP地址;\n # 逗号分隔的地址列表;\n # 默认为\'localhost\'; 使用\'*\'表示所有\n # (更改需要重新启动)\nport = 5432 # (更改需要重新启动)\nmax_connections = 100 # (更改需要重新启动)\n\n有人可以帮助我或指导我如何解决这个问题吗?我已经检查了所有答案,但如果我漏掉了什么,请原谅重复。谢谢您的帮助。

0
0 Comments

问题原因:网络设置中存在双路由器,只打开了内部路由器的端口,而未同时打开两个路由器的端口。

解决方法:打开两个路由器的端口。

0
0 Comments

如何从其他网络远程连接到PostgreSQL数据库?

问题原因:防火墙未允许端口5432的连接。

解决方法:

1. 使用以下命令将端口5432添加到防火墙允许的端口列表中:

root:~# ufw allow 5432/tcp
Rule added
Rule added (v6)

2. 现在允许来自IPv4和IPv6的连接:

...
[11] 40678/tcp                  ALLOW IN    Anywhere
[12] 5432/tcp                   ALLOW IN    Anywhere
[13] 888/tcp (v6)               ALLOW IN    Anywhere (v6)
[14] 20/tcp (v6)                ALLOW IN    Anywhere (v6)
[15] 21/tcp (v6)                ALLOW IN    Anywhere (v6)
[16] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[17] 80/tcp (v6)                ALLOW IN    Anywhere (v6)
[18] 39000:40000/tcp (v6)       ALLOW IN    Anywhere (v6)
[19] 8888/tcp (v6)              ALLOW IN    Anywhere (v6)
[20] 8443/tcp (v6)              ALLOW IN    Anywhere (v6)
[21] 8443/udp (v6)              ALLOW IN    Anywhere (v6)
[22] 443/tcp (v6)               ALLOW IN    Anywhere (v6)
[23] 40678/tcp (v6)             ALLOW IN    Anywhere (v6)
[24] 5432/tcp (v6)              ALLOW IN    Anywhere (v6)

备注:允许从外部连接到PostgreSQL端口会暴露它受到暴力破解攻击的风险。

使用Fail2Ban创建一个策略来禁止此类滥用攻击,可以参考此链接

0
0 Comments

问题原因:可能是由于以下原因导致的基本错误:

- 在更改pg_hba.conf后没有重新加载PostgreSQL

- 在更改listen_addresses后没有重新启动PostgreSQL

解决方法:

- 运行以下命令验证:

SHOW listen_addresses;
TABLE pg_hba_file_rules;

并检查结果是否符合预期。

除此之外,还有以下可能性:

- 连接到错误的服务器或使用错误的端口

- 防火墙未正确配置(可能存在于客户端、服务器之间以及它们之间)

请注意,以上是解决问题的一些建议,具体解决方法可能因个人情况而异。

0