0

0

mysql在WSL环境中安装与使用注意事项

P粉602998670

P粉602998670

发布时间:2026-01-09 00:33:11

|

311人浏览过

|

来源于php中文网

原创

WSL中MySQL安装后启动失败主因是systemd未启用或内存不足;需检查systemd状态、配置wsl.conf增加内存、用mysql_secure_installation初始化,或跳过权限验证重设密码,并正确配置网络与数据目录路径。

mysql在wsl环境中安装与使用注意事项

WSL 中 MySQL 安装失败常见原因

在 WSL(尤其是 WSL2)里直接 sudo apt install mysql-server 通常能成功,但后续启动失败、无法连接或服务自动退出,多半是因 systemd 不可用或资源限制导致。WSL1 默认无 systemd,WSL2 虽支持但需手动启用,而 MySQL 8.0+ 的 mysqld 默认依赖 systemd 管理 socket 和服务状态。

  • 检查是否启用了 systemd:运行 ps -p 1 -o comm=,输出 systemd 才表示已启用;否则会 fallback 到 sysvinit,但 MySQL 包可能未安装对应脚本
  • 若未启用 systemd,建议改用 mysql-server-8.0 的非 systemd 版本(如 Ubuntu 22.04+ 的 mysql-server 包实际已适配),或手动以守护进程方式启动:
    sudo mysqld --user=mysql --datadir=/var/lib/mysql --socket=/var/run/mysqld/mysqld.sock --port=3306 --pid-file=/var/run/mysqld/mysqld.pid &
  • WSL2 内存默认限制较紧(尤其 Windows 内存不足时),mysqld 启动后可能被 OOM killer 杀掉;可在 /etc/wsl.conf 中添加:
    [wsl2]
    memory=2GB
    swap=1GB
    ,然后重启 WSL(wsl --shutdown + 重新打开)

初始化 root 密码与跳过权限验证的实操区别

MySQL 5.7+ 默认禁用空密码 root 登录,且首次启动后不会生成临时密码(不像旧版会打印到 error log)。如果 sudo mysql 直接报 Access denied,说明没设密码或认证插件不匹配。

  • 安全初始化推荐用 sudo mysql_secure_installation,它会引导设置 root 密码、禁用匿名用户、删除 test 数据库等——但前提是 mysqld 已正常运行且 socket 可达
  • 若卡在登录环节,可临时跳过权限验证:先停止服务(sudo service mysql stop 或 kill mysqld 进程),再用 sudo mysqld --skip-grant-tables --skip-networking & 启动,此时 mysql -u root 可免密登录,接着执行:
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';
  • 注意:WSL 中 localhost127.0.0.1 行为一致,但若用 TCP 连接(如从 Windows 主机连 WSL 的 MySQL),需确认 bind-address/etc/mysql/mysql.conf.d/mysqld.cnf 中设为 0.0.0.0 或注释掉,并开放 port = 3306

从 Windows 主机连接 WSL 中 MySQL 的网络配置要点

WSL2 使用虚拟网卡,其 IP 每次启动可能变化,且 Windows 防火墙默认拦截 3306 端口。直接填 localhost:3306 从 Windows 连不上,必须用 WSL2 的实际 IP。

白月生产企业订单管理系统GBK2.0  Build 080807
白月生产企业订单管理系统GBK2.0 Build 080807

请注意以下说明:1、本程序允许任何人免费使用。2、本程序采用PHP+MYSQL架构编写。并且经过ZEND加密,所以运行环境需要有ZEND引擎支持。3、需要售后服务的,请与本作者联系,联系方式见下方。4、本程序还可以与您的网站想整合,可以实现用户在线服务功能,可以让客户管理自己的信息,可以查询自己的订单状况。以及返点信息等相关客户利益的信息。这个功能可提高客户的向心度。安装方法:1、解压本系统,放在

下载
  • 在 WSL 中运行 ip addr show eth0 | grep "inet " | awk '{print $2}' | cut -d/ -f1 获取当前 IPv4 地址(如 172.28.12.19
  • 在 Windows PowerShell(管理员)中执行:
    netsh interface portproxy add v4tov4 listenport=3306 listenaddress=127.0.0.1 connectport=3306 connectaddress=172.28.12.19
    ,这样 Windows 上就能用 127.0.0.1:3306 访问
  • 确保 MySQL 用户允许远程连接:登录后执行
    CREATE USER 'dev'@'%' IDENTIFIED BY 'pass'; GRANT ALL ON *.* TO 'dev'@'%'; FLUSH PRIVILEGES;
    ;注意 '%' 不包含 localhost,所以本地仍要用 'root'@'localhost'
  • Windows 防火墙要放行入站规则:控制面板 → Windows Defender 防火墙 → 高级设置 → 入站规则 → 新建规则 → 端口 → TCP 3306 → 允许连接

数据目录迁移与权限问题(尤其挂载 Windows 文件系统时)

把 MySQL datadir 改到 /mnt/c/... 下看似方便备份,但会导致启动失败或数据损坏——NTFS 文件系统不支持 Unix 套接字、硬链接、文件锁等 MySQL 依赖的底层特性。

  • 绝对不要将 datadir 设为 /mnt/c/... 或任何跨文件系统路径;只允许保留在 WSL 的 ext4 分区(如 /var/lib/mysql/home/user/mysql-data
  • 若需定期导出到 Windows,用 mysqldumpmysqlpump 生成 SQL 文件,再复制到 /mnt/c/...;导入同理,先复制进 WSL,再用 mysql 命令执行
  • 修改 datadir 后必须同步更新 AppArmor 配置(Ubuntu):编辑 /etc/apparmor.d/usr.sbin.mysqld,添加新路径的读写权限,然后执行 sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
  • 权限错误典型现象:启动时报 Can't start server : Bind on unix socket: Permission denied,检查 /var/run/mysqld/ 目录属主是否为 mysql:mysql,并确认 SELinux/AppArmor 未拦截

WSL 环境下 MySQL 最容易被忽略的是 systemd 依赖和 Windows/WSL 网络边界——不是“装上了就能用”,而是得明确知道哪一步在哪个环境里生效、socket 走的是 Unix 域还是 TCP、以及权限模型如何跨层传递。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

676

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

320

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

346

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1094

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

357

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

675

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

571

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

412

2024.04.29

php学习网站大全
php学习网站大全

精选多个优质PHP入门学习网站,涵盖教程、实战与文档,适合零基础到进阶开发者,助你高效掌握PHP编程。

0

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.7万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 785人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号