WSL2 使用“localhost”访问 Windows 服务

时间:2021-01-08 08:39:56

标签: windows-10 local wsl-2

我在 Windows 10 上使用 WSL2。

我的开发堆栈在主机操作系统上使用本地网络服务器(localwp 或 wamp)。 我使用 WSL2 作为主终端(SSH、Git、SASS、自动化工具……)。

我需要的是一种使用服务器名称而不是随机 IP 地址从 WSL2 系统连接到我的主机服务 (MySql) 的方法。

Windows 主机已经可以使用“localhost”连接到 WSL2 服务。有没有其他解决办法?

2 个答案:

答案 0 :(得分:1)

嗯,你的标题和你的问题正文似乎不太一致。

问题标题说“使用本地主机”,但随后在正文中说“使用服务器名称”。

通过 WSL2 的名称“localhost”访问 Windows 10 服务?让我们说“不”。我可以想出可能性如何让它发挥作用,但会很复杂。

但我认为第二个确实是您正在寻找的,因此我可以想到在 WSL2 中通过主机名访问 Windows 主机服务的几个选项:

  • 首先,希望是最简单的,WSL2 支持 mDNS(WSL1 不支持),因此您应该能够以 {hostname}.local 身份访问 Windows 主机(其中 {hostname} 是Windows 主机(字面意思是,在 bash 中,ping $(hostname).local,因为分配的 WSL2 主机名是主机 Windows 10 计算机的主机名)。这对我有用。虽然我不记得必须做任何特殊的事情来启用它,{ {3}} 似乎表示您必须手动将其打开。

  • 第二个选项是将您的 Windows 主机 IP 添加到 /etc/hosts。如果您的 Windows IP 是静态的,那么您可以手动将其添加到 /etc/hosts 并完成。如果它是动态的,那么您可能需要编写脚本。您可以通过以下方式从 WSL2 内部检索它:

    powershell.exe "(Test-Connection -ComputerName (hostname) -Count 1).IPV4Address.IPAddressToString"(和其他方法)然后使用类似 sed 的东西来改变 /etc/hosts

答案 1 :(得分:0)

对我来说这是有效的。

  1. 获取主机名,在 windows powershell ping $(hostname) 中运行它。就我而言,主机名是 DESKTOP-PTR6ALS
  2. 现在在 WSL2 中,我在 MySQL 配置 DESKTOP-PTR6ALS.local 中使用了它作为主机名。