Назад | Перейти на главную страницу

Невозможно получить доступ к серверу CentOS 7 Postgresql из другого CentOS7 с использованием PHP и PDO

Начало

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