开始
服务器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).
…
问题
我可以从任何地方远程使用DbSchema,Heidisql,Postgresql sql Maestro等访问服务器1上的Postgresql.但是,我无法使用PHP和PDO从Server 2连接.它总是导致[08006]超时.
我试过以下,但没有帮助;
sudo setsebool httpd_can_network_connect 1
…
问题
如何使用PHP从服务器2访问服务器1上的Postgresql数据库?我是CentOS7的新手.在使用其他Linux发行版之前我已经完成了这个,没有任何问题.我缺少什么SELinux /其他设置?
…
解决方案(下)
请参阅以下亚历山大的答案.我以为在防火墙-cmd中启用了5432.
当我发出以下命令时
sudo firewall-cmd --zone=public --list-services
只列出了dhcpv6-client http ssh https!我的postgresql发生了什么事?
我只是发出以下命令使服务永久化;
sudo firewall-cmd --add-service=postgresql --permanent
正如您在问题中提到的,您在firewalld中只打开了三个端口.您应该在防火墙上打开端口5432.
另外你应该检查哪些IP监听postgres,它只能在127.0.0.1:5432上收听.