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

在 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 连接失败的问题,节省大量排查时间。如果你也遇到类似"电脑疑难档案",欢迎留言交流!

相关推荐
fakerth3 天前
【OpenHarmony】communication_ipc模块
操作系统·openharmony
Coisinier4 天前
RHCE中shell脚本基础(磁盘剩余空间监控,Web 服务状态检查,curl 访问 Web 服务并返回状态)
linux·运维·服务器·前端·nginx·操作系统
Qres8215 天前
docker & WSL & Ubuntu安装记录
ubuntu·docker·容器·wsl
小宇子2B5 天前
free 完再 malloc 同样大小,为什么常拿回刚还回去的那块?
操作系统
weixin_ab5 天前
【WSL2 + PgVector 远程连接排坑记】
wsl
一条泥憨鱼7 天前
Java开发效率神器:Lombok从入门到精通!
java·后端·学习·开发·lombok
触底反弹7 天前
拷个 .exe 到新电脑就跑不起来?你缺的不是文件,是对链接的理解
c++·windows·操作系统
杊页7 天前
第一板块:Android 系统基石与运行原理 | 第二篇:Android 编译、打包与安装机制
android·操作系统
壮Sir不壮7 天前
GO语言——GMP调度模型
linux·开发语言·golang·go·操作系统·线程·协程
Surest7 天前
OpenHarmony 技术拆解(二):从 capability 看懂分布式软总线与任务迁移
操作系统