Postgresql
使用 pgAdmin III 連接到外部數據庫
我正在嘗試從 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.conf
pgAdmin 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
. 如果這不起作用,那麼這個問題中列出了其他方法。