無法使用 PHP 和 PDO 從另一個 CentOS7 訪問 CentOS 7 Postgresql 伺服器
開始
伺服器 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 上監聽。