You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WSL 2能否设置静态IP?Rails开发连接Windows宿主机MySQL重启IP变动求助

WSL2连接Windows宿主机MySQL的解决方法

方案一:自动适配动态宿主机IP(推荐,操作最简单)

这个方案无需修改WSL网络规则,直接适配每次重启后变动的宿主机IP:

  • 先配置Windows侧权限:
    1. 修改MySQL配置文件my.ini,将bind-address改为0.0.0.0,重启MySQL服务
    2. 给对应数据库用户开启WSL网段访问权限,在MySQL中执行:
      GRANT ALL PRIVILEGES ON 你的数据库名.* TO '数据库用户名'@'172.%' IDENTIFIED BY '数据库密码'; FLUSH PRIVILEGES;
    3. Windows防火墙添加入站规则,允许172.16.0.0/12网段访问3306端口
  • 再配置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地址,按以下步骤操作:

  1. 以管理员身份打开Windows PowerShell,执行命令给WSL虚拟网卡设置固定宿主机侧IP:
    New-NetIPAddress -InterfaceAlias "vEthernet (WSL)" -IPAddress 192.168.50.1 -PrefixLength 24
    你可以根据需求自定义网段,这里以192.168.50.x为例。
  2. 打开WSL2终端,编辑/etc/wsl.conf,添加如下配置关闭自动网络生成:

[network]
generateResolvConf = false
generateHosts = false

  1. 执行以下命令给WSL设置静态IP:
    ip addr add 192.168.50.2/24 broadcast 192.168.50.255 dev eth0
    ip route add default via 192.168.50.1 dev eth0
  2. 编辑/etc/resolv.conf设置固定DNS:
nameserver 8.8.8.8
nameserver 192.168.50.1
  1. 为避免WSL重启后配置丢失,将步骤3的两条IP设置命令添加到/etc/profile末尾,WSL启动时会自动执行配置。
  2. 后续连接宿主机MySQL时,host直接填写192.168.50.1即可,该地址不会随设备重启变动。

内容的提问来源于stack exchange,提问作者Jepzen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 13:54:02