Postgresql
從本地網路連接到 WSL2 Postgres 數據庫
我在適用於 Linux 2 (WSL2) 的 Windows 子系統中執行 Postgres 12 服務。
在我的
/etc/postgresql/12/main/postgresql.conf
,我有:listen_addresses = '*'
雖然我
/etc/postgresql/12/main/pg_hba.conf
有這個內容:local all postgres peer local all all peer host all all 0.0.0.0/0 md5 host all all ::0/0 md5 host all all 0.0.0.0/0 md5 host all all ::0/0 md5 host all all all md5
如果我嘗試從本地電腦以外的任何其他設備連接到此伺服器,則會超時。
有誰知道為什麼會這樣?
您需要將 Windows 埠轉發到 WSL2。
使用 WSL 1 發行版時,如果您的電腦設置為可以通過 LAN 訪問,那麼在 WSL 中執行的應用程序也可以在您的 LAN 上訪問。
這不是WSL 2 中的預設情況。WSL 2 具有一個具有自己唯一 IP 地址的虛擬化乙太網適配器。目前,要啟用此工作流程,您需要執行與正常虛擬機相同的步驟。(我們正在尋找改善這種體驗的方法。)
這是一個範例 PowerShell 命令,用於添加一個埠代理,該埠代理偵聽主機上的埠 4000,並將其連接到埠 4000 到 IP 地址為 192.168.101.100 的 WSL 2 VM。
netsh interface portproxy add v4tov4 listenport=4000 listenaddress=0.0.0.0 connectport=4000 connectaddress=192.168.101.100
參考:比較 WSL 1 和 WSL 2:從區域網路 (LAN) 訪問 WSL 2 發行版(Microsoft | Docs)