Como você mencionou na sua pergunta, você abriu apenas três portas no firewalld. Você deve abrir a porta 5432 no firewall.
Além disso, você deve verificar em quais postgres de escuta de IP, ele poderia ouvir somente em 127.0.0.1:5432.
O servidor 1 é o meu servidor de produção do CentOS 7. Ele contém Apache, ssh e um banco de dados Postgresql.
Servidor 2 é o meu servidor de teste do CentOS 7. Ele contém Apache, ssh e um banco de dados de teste.
Ambos os servidores são configurados com firewalld para aceitar 22, 80 e 443. Ambos os servidores possuem a seguinte configuração.
sudo setsebool httpd_can_network_connect_db 1
...
Eu posso ssh em (porta 22). Eu posso ver a página de teste "Teste 1, 2, 3 ..." via http e https (porta 80 e 443). Eu posso acessar o Postgresql usando o SQL Maestro, DBeaver, DBSchema, etc. (porta 5432).
...
Eu posso acessar o Postgresql no Servidor 1 usando o DbSchema, o HeidiSQL, o Postgresql SQL Maestro, etc., remotamente, de qualquer lugar. No entanto, não consigo me conectar a partir do Servidor 2 usando PHP e PDO. Isso sempre leva a [08006] Tempo limite .
Eu tentei o seguinte, mas não ajudei; sudo setsebool httpd_can_network_connect 1
...
Como faço para acessar o banco de dados do Postgresql no Servidor 1 do Servidor 2 usando o PHP? Eu sou novo no CentOS7. Eu fiz isso antes de usar outra distribuição Linux sem problemas. O que o SELinux / outras configurações que eu falta? ...
Veja a resposta de Alexander abaixo. Eu pensei que o 5432 estava habilitado no firewall-cmd. Quando eu emiti o seguinte comando
sudo firewall-cmd --zone=public --list-services
apenas dhcpv6-client http ssh https
foram listados! O que aconteceu com o meu postgresql?
Eu simplesmente emiti o seguinte para tornar o serviço permanente;
sudo firewall-cmd --add-service=postgresql --permanent
Tags php postgresql selinux centos centos7