Centos

無法使用 PHP 和 PDO 從另一個 CentOS7 訪問 CentOS 7 Postgresql 伺服器

  • April 4, 2017

開始

伺服器 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 等(埠 5432)訪問 Postgresql。

問題

我可以使用 DbSchema、HeidiSQL、Postgresql SQL Maestro 等從任何地方遠端訪問伺服器 1上的 Postgresql。但是,我無法使用 PHP 和 PDO從伺服器 2進行連接。它總是導致$$ 08006 $$超時**。

我嘗試了以下方法,但沒有幫助;sudo setsebool httpd_can_network_connect 1

問題

如何使用 PHP從**伺服器 2訪問****伺服器 1上的 Postgresql 數據庫?**我是 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 上監聽。

引用自:https://serverfault.com/questions/838803