Postgresql

使用 pgAdmin III 連接到外部數據庫

  • May 16, 2018

我正在嘗試從 pgAdmin III(安裝在兩台機器上)連接到外部數據庫。客戶抱怨:

拒絕訪問數據庫

伺服器不授予對數據庫的訪問權限:伺服器報告

FATAL: no pg_hba.conf entry for host "192.168.108.161",
                                user "postgres",
                            database "postgres",
                                 SSL off 

要訪問 PostgreSQL 伺服器上的數據庫,您首先必須為您的客戶端授予對伺服器的主要訪問權限(基於主機的身份驗證)。如果在評估pg_hba.conf任何訪問控制列表之前存在並啟用與您的客戶端地址/使用者名/數據庫匹配的模式,PostgreSQL 將檢查該文件。SQL GRANT

pg_hba.conf 中的初始設置非常嚴格,以避免未經審查但強制性的系統設置導致不必要的安全漏洞。您可能需要添加類似

host all all 192.168.0.0/24 md5 

此範例授予專用網路上的所有使用者對所有數據庫的 MD5 加密密碼訪問權限192.168.0.0/24。您可以使用pg_hba.confpgAdmin III 內置的編輯器來編輯pg_hba.conf配置文件。

更改後,您需要使用或通過停止和重新啟動伺服器程序pg_hba.conf來觸發伺服器配置重新載入。pg_ctl

伺服器明確聲明接受來自內部網路的所有連接。

pg_hba.conf

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     md5
host    all             all             127.0.0.1/32            md5
host    all             all             ::1/128                 md5
host    all             all             192.168.0.0/24          md5

我已經重新啟動了 postmaster 以使更改生效,並且甚至重新啟動了整個機器。這裡還有什麼問題?

這一行:

託管所有 192.168.0.0/24 md5

將允許來自與任何字節匹配192.168.0.X的IP 的連接。X

您的錯誤消息的 IP 地址是192.168.108.161,它與此模式不匹配,因為108不是0

要啟用類似的地址192.168.X.Y,您需要 a/16而不是/24意味著僅前 16 位是固定的。

像這樣:

託管所有 192.168.0.0/16 md5

不要忘記重新載入 Postgresql。從官方文件中,使用pg_ctl reload. 如果這不起作用,那麼這個問題中列出了其他方法。

引用自:https://dba.stackexchange.com/questions/48152