无法连接WSL2内部运行的MySQL服务的问题求助
WSL2运行MySQL无法被Windows端工具连接的解决方案
- 检查WSL2内MySQL的绑定地址配置
进入WSL2终端编辑MySQL配置文件,常见路径为/etc/mysql/mysql.conf.d/mysqld.cnf,找到bind-address配置项,默认值为127.0.0.1仅允许本地访问,修改为0.0.0.0或直接注释该行,修改后重启MySQL服务,Ubuntu发行版执行命令为sudo systemctl restart mysql。 - 检查MySQL用户的访问权限
WSL2内登录MySQL,执行SELECT user, host FROM mysql.user;查看用户的访问地址限制,如果用于连接的用户host仅为localhost,需要修改授权规则,示例命令如下:
生产环境不要使用GRANT ALL PRIVILEGES ON *.* TO '你的用户名'@'%' IDENTIFIED BY '你的MySQL密码' WITH GRANT OPTION; FLUSH PRIVILEGES;%通配符,按需限制访问地址提升安全性 - 配置Windows防火墙放行规则
端口转发需要防火墙放行3306端口的入站请求,执行以下命令添加规则:netsh advfirewall firewall add rule name="WSL2 MySQL 3306" dir=in action=allow protocol=TCP localport=3306 - 确认WSL2当前IP与转发规则匹配
WSL2每次重启后IP会自动变更,若之前配置转发时使用的IP已过期会导致转发失效,在WSL2内执行ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1获取当前真实IP,先删除旧的转发规则:netsh interface portproxy delete v4tov4 listenport=3306 listenaddress=0.0.0.0
再执行你原有的端口转发命令,替换connectaddress为最新获取的WSL2 IP即可。 - 验证配置是否生效
执行netsh interface portproxy show all可查看当前所有端口转发规则,确认3306端口的转发地址和端口配置正确。你提供的netstat结果显示3306端口已处于监听状态,说明转发监听配置已生效,优先排查上述几项问题即可。
内容的提问来源于stack exchange,提问作者sunny
相关产品推荐
相关产品推荐

