开始
服务器 1是我的 CentOS 7 生产服务器。它包含 Apache、ssh 和 Postgresql 数据库。
服务器 2是我的 CentOS 7 测试服务器。它包含 Apache、ssh 和测试数据库。
两台服务器都设置了firewalld来接受22、80和443。两台服务器都有以下设置。
sudo setsebool httpd_can_network_connect_db 1
...
我怎么知道这些端口是开放的?
我可以通过 ssh 进入(端口 22)。我可以通过 http 和 https(端口 80 和 443)查看“测试 1、2、3...”测试页面。我可以使用 SQL Maestro、DBeaver、DBSchema 等访问 Postgresql(端口 5432)。
...
问题
我可以访问 Postgresql服务器 1使用 DbSchema、HeidiSQL、Postgresql SQL Maestro 等,从任何地方远程连接。但是我无法从服务器 2使用 PHP 和 PDO。它总是导致[08006] 超时。
我尝试了以下操作,但没有帮助;sudo setsebool httpd_can_network_connect 1
...
问题
如何访问 Postgresql 数据库服务器 1从服务器 2使用 PHP?我是 CentOS7 的新手。我之前使用其他 Linux 发行版时也这样做过,没有任何问题。我遗漏了哪些 SELinux/其他设置?...
解决方案(如下)
请参阅下面 Alexander 的回答。我以为 5432 是在防火墙命令中启用的。当我发出以下命令时
sudo firewall-cmd --zone=public --list-services
仅dhcpv6-client http ssh https
列出!我的 postgresql 怎么了?我只需发出以下命令即可使服务永久生效;
sudo firewall-cmd --add-service=postgresql --permanent
答案1
正如您在问题中提到的,您在防火墙中只打开了三个端口。您应该在防火墙上打开端口 5432。
您还应该检查哪个 IP 在监听 postgres,它只能监听 127.0.0.1:5432。