需要幫助理解錯誤消息:錯誤連接到數據庫致命:沒有 pg_hba.conf 條目
我們正在嘗試使用 QGIS-Application 連接到遠端伺服器上的 postgres/postgis 安裝。當從另一台電腦或同一台電腦通過 pgadmin4v4 使用相同的憑據/身份驗證設置進行訪問時,它工作得很好。因此我得出結論 pg_hba.conf 沒問題,實際上是 QGIS 的問題。
為了更好地理解問題並可能為 QGIS 送出錯誤,我需要幫助分析錯誤消息。它說:
Area: dbname = <databasename>, host <server-ip>, port 5432, user <username>, password <password>, authcfg = <id_of_auth_record> SSL error: certificate verify failed FATAL: no pg_hba.conf entry for host <some_other-ip>, user <username>, database <databasename>, SSL off
我的主要問題:
- 主機IP地址不應該相同嗎?可能是問題的一部分,提到的第二個 IP 不是正確的伺服器 IP?據我所見,應該只有一台主機(遠端伺服器)和一台客戶端(試圖訪問的電腦)。
- 為什麼不說“客戶端沒有 pg_hba.conf 條目……”
- QGIS 認為這是證書問題,還是 pg_hba.conf 問題,還是兩者相同
更新:有關安裝的更多詳細資訊
- 客戶端-PC1:Win10、QGIS 3.4$$ error $$pgAdmin 4v4$$ access ok $$
- 客戶端-PC2:Win10、QGIS 3.10$$ access ok $$pgAdmin 4v4$$ access ok $$
- 伺服器:postgres 12
- pg_hba.conf:
# Database administrative login by Unix domain socket local all postgres peer # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 0.0.0.0/0 scram-sha-256 # IPv6 local connections: hostssl all all ::0/0 scram-sha-256
主機IP地址不應該相同嗎?可能是問題的一部分,提到的第二個 IP 不是正確的伺服器 IP?據我所見,應該只有一台主機(遠端伺服器)和一台客戶端(試圖訪問的電腦)。
如果它們之間有某種防火牆或 NAT,它們通常不會完全相同。但這不應導致驗證失敗,除非您使用客戶端證書和伺服器證書(您似乎沒有使用)。客戶端會將證書中的主機名/IP 地址與其要求的主機名/IP 進行比較,並查看它們是否匹配。我意識到你可能在問一個不同的問題。“客戶端”和“伺服器”互為補充。“客戶”和“主機”不是互補詞。伺服器和客戶端都有主機名和主機 IP 地址。它們通常不會彼此相同。
為什麼不說“客戶端沒有 pg_hba.conf 條目……”
它正在報告(它認為)客戶端連接的*主機。*如果它只是說“客戶”,那是什麼意思?這可能意味著它不喜歡客戶端是 python 而不是 psql。客戶端主機的問題,而不是客戶端的其他方面。
QGIS 認為這是證書問題,還是 pg_hba.conf 問題,還是兩者相同
兩者,但分開。它首先嘗試使用 SSL,並認為存在證書問題。然後它不嘗試 SSL 並發現 pg_hba 不會讓它這樣做。如果您將客戶端配置為“要求”或更高(而不是“首選”)
sslmode
,則客戶端將停止進行第二次嘗試。似乎您的客戶端正在查找一個
.postgresql/root.crt
或等效文件,但無法使用該文件來驗證伺服器。您可以從您的客戶端隱藏此文件,然後它將停止嘗試驗證伺服器。然後它將僅使用 ssl 進行加密,而不用於驗證。