WSL 2能否设置静态IP?Rails开发连接Windows宿主机MySQL重启IP变动求助
WSL2连接Windows宿主机MySQL的解决方法
方案一:自动适配动态宿主机IP(推荐,操作最简单)
这个方案无需修改WSL网络规则,直接适配每次重启后变动的宿主机IP:
- 先配置Windows侧权限:
- 修改MySQL配置文件
my.ini,将bind-address改为0.0.0.0,重启MySQL服务 - 给对应数据库用户开启WSL网段访问权限,在MySQL中执行:
GRANT ALL PRIVILEGES ON 你的数据库名.* TO '数据库用户名'@'172.%' IDENTIFIED BY '数据库密码'; FLUSH PRIVILEGES; - Windows防火墙添加入站规则,允许172.16.0.0/12网段访问3306端口
- 修改MySQL配置文件
- 再配置Rails项目的数据库连接:
编辑项目下config/database.yml,将host字段改为动态读取resolv.conf中的宿主机IP:host: <%= File.read("/etc/resolv.conf").match(/nameserver (\d+\.\d+\.\d+\.\d+)/)[1] %>
每次Rails启动时会自动读取当前宿主机IP,无需手动修改配置。
方案二:设置WSL2静态IP
如果需要固定WSL本身的IP地址,按以下步骤操作:
- 以管理员身份打开Windows PowerShell,执行命令给WSL虚拟网卡设置固定宿主机侧IP:
New-NetIPAddress -InterfaceAlias "vEthernet (WSL)" -IPAddress 192.168.50.1 -PrefixLength 24
你可以根据需求自定义网段,这里以192.168.50.x为例。 - 打开WSL2终端,编辑
/etc/wsl.conf,添加如下配置关闭自动网络生成:
[network]
generateResolvConf = false
generateHosts = false
- 执行以下命令给WSL设置静态IP:
ip addr add 192.168.50.2/24 broadcast 192.168.50.255 dev eth0ip route add default via 192.168.50.1 dev eth0 - 编辑
/etc/resolv.conf设置固定DNS:
nameserver 8.8.8.8 nameserver 192.168.50.1
- 为避免WSL重启后配置丢失,将步骤3的两条IP设置命令添加到
/etc/profile末尾,WSL启动时会自动执行配置。 - 后续连接宿主机MySQL时,host直接填写
192.168.50.1即可,该地址不会随设备重启变动。
内容的提问来源于stack exchange,提问作者Jepzen
相关产品推荐
相关产品推荐

