如何实现同一机器上WSL2与Windows本地MySQL Server的连接?
WSL2连接Windows本地MySQL Server的解决方案
1. 获取Windows主机在WSL2中的可访问地址
在WSL2终端执行命令,找到nameserver对应的IP,这就是Windows主机在WSL网络中的入口:
cat /etc/resolv.conf
更简便的方式是直接使用内置域名host.docker.internal,WSL2会自动将其解析为Windows主机IP,无需手动查找。
2. 配置Windows本地MySQL允许外部访问
- 打开MySQL配置文件(通常为
my.ini或my.cnf,位于MySQL安装目录),找到bind-address项,修改为0.0.0.0(允许所有IP访问,适合本地测试),或指定WSL2子网IP段提升安全性。 - 重启Windows的MySQL服务:打开「服务」管理器,找到MySQL服务右键选择「重启」。
- 在MySQL中给目标账号授予跨IP访问权限(以克隆数据库为例):
注:GRANT ALL PRIVILEGES ON 你的克隆数据库名.* TO '数据库用户名'@'%' IDENTIFIED BY '数据库密码'; FLUSH PRIVILEGES;%表示允许所有IP访问,若想限制仅WSL访问,可替换为WSL2的IP地址(通过hostname -I在WSL终端获取)。
3. 修改Laravel项目的.env配置
将数据库连接地址替换为刚才获取的Windows主机IP或host.docker.internal:
DB_CONNECTION=mysql DB_HOST=host.docker.internal # 或你查到的Windows主机IP DB_PORT=3306 DB_DATABASE=你的克隆数据库名 DB_USERNAME=数据库用户名 DB_PASSWORD=数据库密码
4. 检查Windows防火墙设置
确保Windows防火墙允许MySQL的3306端口入站:
- 打开「Windows Defender防火墙」→「高级设置」→「入站规则」→「新建规则」
- 选择「端口」→ 勾选「TCP」,输入
3306→ 允许连接→ 完成规则创建。
内容的提问来源于stack exchange,提问作者Eric Digiorgio
相关产品推荐
相关产品推荐

