无法使用 PHP 和 PDO 从另一个 CentOS7 访问 CentOS 7 Postgresql Server

无法使用 PHP 和 PDO 从另一个 CentOS7 访问 CentOS 7 Postgresql Server

开始

服务器 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。

相关内容