WSL中安装MySQL应使用apt而非Windows版MSI,配置需修改bind-address为0.0.0.0、启用systemd、切换root用户认证插件为mysql_native_password,并确保数据目录位于WSL文件系统内。

WSL 里装 MySQL 用 apt 安装就行,别下 Windows 版 MSI
Windows 自带的 MySQL Installer(MSI)是给原生 Windows 用的,装在 WSL 里会失败或无法启动——WSL 是 Linux 内核兼容层,得用 Ubuntu/Debian 的包管理方式。直接 sudo apt update && sudo apt install mysql-server 最稳妥,配置文件默认在 /etc/mysql/,服务走 systemd(WSL2 支持)。
- 安装后自动启用并启动服务,检查用
sudo systemctl status mysql - 首次运行会自动生成 root 密码,藏在
/var/log/mysql/error.log里,搜A temporary password行 - 如果提示
Failed to connect to bus,说明 WSL1 或未启用 systemd:升级到 WSL2 + 在/etc/wsl.conf加[boot] systemd=true,然后wsl --shutdown重启
MySQL 绑定地址必须改,否则 Windows 主机连不上
WSL 默认只监听 127.0.0.1,这是 WSL 自己的 localhost,不是 Windows 的。想从 Windows 的 Navicat、DBeaver 或命令行连,得让 MySQL 监听 WSL 的 IP 或所有接口。
- 编辑
/etc/mysql/mysql.conf.d/mysqld.cnf,找到bind-address,改成bind-address = 0.0.0.0(开发环境够用)或具体 WSL IP(ip addr show eth0 | grep inet查) - 改完必须执行
sudo systemctl restart mysql,不重启配置不生效 - Windows 防火墙默认拦非本地端口,要放行
mysql(端口 3306)或临时关掉测试;WSL 端口映射靠 Windows 自动做,不用额外配netsh
root 用户远程登录权限默认关闭,得手动开
即使绑定地址改了,MySQL 8+ 的 root@localhost 账户默认不接受非本地连接,报错 Access denied for user 'root'@'xxx.xxx.xxx.xxx'。
- 先用临时密码登录:
sudo mysql -u root -p - 执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password'; - 再授权远程访问:
CREATE USER 'root'@'%' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; - 注意:MySQL 8+ 默认认证插件是
caching_sha2_password,很多客户端(尤其是老版本)不支持,强制切回mysql_native_password才稳
Windows 和 WSL 文件路径混用会出问题
MySQL 的 datadir、socket、日志路径如果指向 Windows 挂载点(比如 /mnt/c/xxx),性能极差且容易卡死或报错 Operation not permitted。
- 数据目录务必留在 WSL 文件系统内,例如默认的
/var/lib/mysql,别挪到/mnt/c - 备份导出用
mysqldump输出到 WSL 路径,再用cp或code .复制到 Windows;别直接mysqldump > /mnt/c/Users/xxx/backup.sql -
socket文件路径(如/var/run/mysqld/mysqld.sock)不能改到/mnt下,否则客户端连不上
WSL 上跑 MySQL 最容易被忽略的其实是 systemd 启动状态和认证插件类型——前者导致服务起不来,后者导致连得上但登不进,两个问题经常一起出现,查日志前先确认这两项。










