[电脑疑难档案] WSL 无法连接 MySQL 的解决方案:127.0.0.1 不管用?试试这个方法!

新星杯·14天创作挑战营·第17期 10w+人浏览 727人参与

在 Windows 下使用 WSL(Windows Subsystem for Linux)开发越来越普遍,特别是结合前后端或全栈项目时,有些开发者选择在 Windows 本地安装数据库,而将开发环境放在 WSL 中。然而,这种架构下偶尔会遇到一个令人抓狂的问题:在 WSL 中无法通过 127.0.0.1 连接到本机的 MySQL 数据库

别急,这其实是个常见问题,而且解决方法也并不复杂——只需几行命令就能搞定。本文就来分享这一问题的原理、表现以及解决方案。


一、问题现象

当你在 WSL 中运行一个项目(例如 Node.js、Python、Laravel 等)并尝试连接 Windows 主机上安装的 MySQL 数据库时,你可能会设置连接地址为:

host = 127.0.0.1
port = 3306

结果却报错:Connection refusedCan't connect to MySQL server on '127.0.0.1'


二、问题根源

WSL 虽然运行在 Windows 之上,但它本质上是一个“类 Linux 的沙盒”,默认使用的是一个虚拟化的网络接口。因此,当你在 WSL 中使用 127.0.0.1,它指的是 WSL 自己的“回环地址”,并不等同于 Windows 的本地地址。

也就是说:

  • 127.0.0.1 在 WSL 中 → 是 WSL 自己

  • 127.0.0.1 在 Windows 中 → 是 Windows 主机

这就是为啥连接不上。


三、解决方法

步骤 1:查找 Windows 主机 IP 地址(可通过 WSL 访问的网卡 IP)

在 WSL 中运行如下命令:

ip route | grep default

输出类似如下:

default via 172.24.160.1 dev eth0

这里的 172.24.160.1 就是 Windows 主机的网卡地址,WSL 可以通过这个地址访问 Windows 上运行的服务。

步骤 2:使用这个地址替代 127.0.0.1

修改你的项目数据库配置,例如 .env 文件:

DB_HOST=172.24.160.1
DB_PORT=3306

然后再次运行项目,一般就能正常连接 MySQL 数据库了。


四、建议与补充

✅ 建议使用主机名访问

WSL2 中还可以尝试用特殊的主机名 host.docker.internal(某些版本支持)或 localhost.localdomain,也可能指向 Windows 主机。

DB_HOST=host.docker.internal

不过这种方式并不总是可行,仍建议使用实际的网卡 IP 地址。

🔁 IP 地址会变化

每次重启 WSL 网络或 Windows 后,这个 IP 地址可能会改变,因此建议写个脚本自动更新环境变量,或每次连接前手动查一下。

🧱 防火墙检查

确认 Windows 的防火墙未阻止 3306 端口,或者你允许了“来自专用网络的入站连接”。


五、总结

使用 WSL 做开发很方便,但有时也会遇到一些“桥接现实与虚拟”的奇怪问题。连接本机 MySQL 是一个典型案例,但只要理解了 127.0.0.1 的作用域差异,使用实际网卡地址就能完美解决。

希望本文能帮你解决 WSL 中 MySQL 连接失败的问题,节省大量排查时间。如果你也遇到类似“电脑疑难档案”,欢迎留言交流!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术小甜甜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值