Postgresql

從本地網路連接到 WSL2 Postgres 數據庫

  • December 2, 2021

我在適用於 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)

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