Сервер 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.
.