Сервер 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). Я вижу тестовую страницу «Тестирование 1, 2, 3 ...» через http и https (порт 80 и 443). Я могу получить доступ к Postgresql с помощью SQL Maestro, DBeaver, DBSchema и т. Д. (Порт 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 / другие мне не хватает? ...
См. Ответ Александра ниже. Я думал, что 5432 был включен в firewall-cmd. Когда я выполнил следующую команду
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.