ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MySQL 5.7 Windows安装全指南:从MSI到ZIP,避坑详解

MySQL 5.7 Windows安装全指南:从MSI到ZIP,避坑详解 先抛一个和直觉不太一样的现象MySQL 8.0 已经发布好多年了可你在技术社区里搜“安装教程”问得最多、资料最全、踩坑帖最多的一版依然是 MySQL 5.7。原因不是大家守旧而是大量老项目、旧框架、学校课程和毕业设计都锁在 5.7 上。8.0 默认的认证插件对老客户端不友好很多人兴冲冲装完 8.0结果发现 Navicat 连不上、老版本 JDBC 连不上兜了一圈又回到 5.7。所以我干脆把 Windows 上安装 MySQL 5.7 的完整流程写清楚从下载到配置到服务管理和常见故障排查尽量让新手照着做就能一次成功也让老手可以快速定位问题。这次的内容面向的是“想省心装好”的人默认走 MSI 图形化安装这条最稳的路ZIP 手动部署也放在后面单独讲清楚。装完之后你会得到一个能正常开机自启、能在命令行随手敲mysql、数据目录独立的 Windows 数据库服务。1. 装 5.7 之前先想明白的事版本选择与机器准备1.1 为什么 5.7 依然大量存在先说明一点MySQL 5.7 是客观上的“老版本”。它的 GA 版本在 2015 年发布8.0 在 2018 年发布5.7 系列最后停在 5.7.44之后官方不再出 5.7 的新版本。但“老”不等于“没人用”。现实中我见过太多场景还在用 5.7老业务系统上线时就是 5.7数据库不敢动应用层也没人敢保证升到 8.0 不出问题。很多开源程序、CMS、低代码平台在文档里明确写了“要求 MySQL 5.7”你装 8.0 反而会碰到一些兼容性小毛病。学校教材、培训机构、毕业设计模板SQL 示例基本按 5.7 讲。老版本的图形客户端、PHP、Java 连接池默认用mysql_native_password认证插件8.0 默认的caching_sha2_password会导致连接报错。最典型的就是认证插件差异。MySQL 8.0 安装时默认使用caching_sha2_password旧版 Navicat、旧版 PHP mysqli、旧版 JDBC 驱动连上去就是Authentication plugin caching_sha2_password cannot be loaded。不是你的密码错是客户端不认这个插件。MySQL 5.7 默认用mysql_native_password绝大多数工具都支持安装完基本不用折腾额外设置。所以我的建议很直接**如果你是想学 SQL、跑老项目、做课程设计或者只是想本地有个数据库开发环境5.7 是更省心的选择。**如果你是新项目且没有历史包袱那直接上 8.0 或更新版本都行但不在本篇讨论范围内。1.2 安装前的 Windows 环境检查Windows 版本方面Windows 10、Windows 11 装 5.7 都没问题。Windows 7 的话建议至少 SP1不过为了安全性现在不太推荐还在用 Win7 的机器做开发。安装前花两分钟检查这几件事系统位数右键“此电脑”-“属性”看“系统类型”是 64 位还是 32 位。官方 5.7 下载页面同时提供 32 位和 64 位包如果你下载错了位数后面大概率会报“系统找不到指定的路径”或者直接装不上。C 盘空间完整安装大概需要 1GB 到 2GB。即使你准备把数据目录放到 D 盘系统盘也需要留出足够的临时空间给安装程序解压。运行库MySQL 5.7 的 Windows 版本依赖 Microsoft Visual C Redistributable。如果双击安装包后没反应或者提示缺少vcruntime140.dll去微软官方下载“Visual C Redistributable for Visual Studio 2015-2022”装一遍再继续。安装路径不要带中文尽量也不要带空格。比如D:\MySQL\Server比C:\Program Files\MySQL省心。虽然官方安装包放 Program Files 也能用但后续找配置文件、写脚本、部署项目时你会在各种转义字符上难受。还有一个痛点部分杀毒软件或国产卫士类工具会把mysqld.exe的注册服务操作拦截掉导致安装时卡在“Start Service”或者提示“服务没有响应”。如果遇到这种问题优先把 MySQL 安装目录加入信任区而不是直接关掉杀软。等安装完成后再把信任区设置保留后续重装、升级都不容易再被误杀。2. 下载安装包的两条路线MSI 和 ZIP 怎么选2.1 从官方页面或国内镜像稳定拿到安装包官网下载路径是dev.mysql.com/downloads/mysql/5.7.html这个页面会直接列出 5.7 系列的 Windows 安装包不需要在 8.0 页面里翻历史版本。页面上通常有这些下载项Windows (x86, 32-bit), ZIP ArchiveWindows (x86, 64-bit), ZIP ArchiveWindows (x86, 32-bit), MSI InstallerWindows (x86, 64-bit), MSI Installer官网下载时如果不小心点进了“Sign Up”页面不用管找“No thanks, just start my download”这行字点击即可直接开始下载不需要注册 Oracle 账号。不过官网服务器在国外部分网络环境下下载会很慢。这里有两个我常用的国内镜像文件列表和官网保持一致华为云镜像https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-5.7/清华镜像https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/在镜像页面里找mysql-5.7.44-winx64.msi64 位 MSI 安装包或者mysql-5.7.44-winx64.zip64 位 ZIP 包下载速度会快很多。5.7 系列最终的版本就是 5.7.44文件名里的版本号认准它即可。下载完成后如果在官网上看到 MD5 校验值可以顺手对一下确保文件完整。实战中遇到过下载到一半文件损坏双击 MSI 提示“无法打开此安装包”校验文件完整性是排除此类问题最快的方式。2.2 MSI 版和 ZIP 版的本质区别很多人以为 ZIP 版就是“绿色免安装版”解压就能用。实际上不是。ZIP 版只是省去了图形安装向导但my.ini配置、数据目录初始化、Windows 服务注册、环境变量全都得手动做。下面是两者的直观对比对比项MSI 版ZIP 版操作方式图形向导点选完成解压后手动配置服务注册自动完成需要mysqld --install数据目录初始化自动完成需要mysqld --initialize环境变量部分版本自动写入手动配置适用人群新手、追求稳定快速离线部署、定制路径、学习底层出错概率相对低相对高我的建议很明确**绝大多数人直接选 MSI 版。**它省去了很多容易出错的环节特别是数据目录初始化和服务注册。ZIP 版适合什么呢适合需要在多台机器离线复制安装包、或者搞自动化部署脚本的场景也适合想彻底搞懂 MySQL 目录结构的开发者。我当年入行时为了搞明白 MySQL 的目录结构专门用 ZIP 版解压安装过一遍收益很大但第一次用的话没必要给自己加难度。3. MSI 图形化安装全程每一个选项背后是什么3.1 安装类型选择与目录规划双击下载好的mysql-installer-community-5.7.*.msi如果之前电脑上装过 MySQL Installer 组件它会提示先加载产品列表稍等片刻。随后进入Choosing a Setup Type页面常见选项有Developer Default开发环境全家桶包含 Server、Shell、Workbench、Router、各语言 Connector甚至 MySQL for Visual Studio。Server only只装 MySQL 服务最干净。Custom自定义选择安装哪些组件。Full全部产品。**新手我建议选Server only。**原因很现实Developer Default和Full会同时安装一堆开发工具和连接组件其中MySQL for Visual Studio这类组件非常依赖 Visual Studio 环境如果本机没装 VS检查依赖时会一直红叉需要额外处理。而Server only只会装数据库服务本身不会有这些糟心事。后续你需要 Workbench随时可以再单独装。选完安装类型后还有一步可能出现的Check Requirements安装程序会检查缺少哪些依赖。红色条目一般可以忽略或通过“Execute”来安装缺失组件绿色即可通过。接下来是路径选择这里我强烈建议改一下安装目录Installation DirectoryD:\MySQL\Server数据目录Data DirectoryD:\MySQL\Data把程序和数据分开最直接的好处是将来重装系统、升级版本、转移数据都方便。Data目录就是所有数据库文件物理存放的位置如果哪天系统盘坏了只要Data目录还在你的数据就没丢。这就是为什么不要把数据目录藏在系统盘深处。3.2 端口、root 密码与应用配置路径确认后进入产品配置阶段主要配置项集中在MySQL Server Configuration页面里。5.7 的 MSI 配置和 8.0 有点不一样但核心设置是这些Config Type下拉框有Development Machine、Server Machine、Dedicated Machine。开发机选Development Machine它会控制 MySQL 占用内存的初始大小不至于开着电脑只看个数据库内存就占满。端口Port默认3306。除非被占否则不要动。如果本机之前装过 MySQL 8.0 残留服务占用了 3306可以改成3307但改了之后所有连接都要带端口。网络选项勾选TCP/IP即可。X Protocol协议如果没有特殊需求可以不勾它在 5.7 里不是必须的。Windows Service 设置这一页很重要。勾选Configure MySQL Server as a Windows Service服务名默认可能是MySQL57或MySQL如果本机还有别的 MySQL 实例建议手动改成MySQL57避免冲突。再勾选Start the MySQL Server automatically这样开机后服务是自动启动的不用每次手动点。root 密码设置一个自己能记住、又不容易被别人猜到的密码。5.7 安装向导默认不强制密码复杂度但请不要用123456或root这种真的会有安全问题。密码是手动输入的输入框旁边一般会提示强度。还有一个细节需要注意MySQL 5.7 的 MSI 安装时认证插件默认就是mysql_native_password不需要你手动选择。这一点比 8.0 省心也是很多人回头装 5.7 的原因。3.3 应用配置、防火墙与安装完成检查所有配置填完后安装程序会到Apply Configuration这一步。点Execute它会自动初始化数据目录、创建系统表、注册服务并启动服务。你会看到一排步骤带有绿色的勾最后显示The configuration was completed successfully这就说明核心服务已经跑起来了。过程中如果弹出了 Windows 安全警报问你是否允许 MySQL 通过防火墙建议勾选“专用网络”并允许访问。这个设置只影响从局域网访问你的 MySQL如果只是本机使用不勾也不会马上出问题但后面想用另一台机器连这个库做测试时会连不上到时候还得回头放行一下。安装完成后MySQL Installer 主界面会回到产品列表右上角有 Exit直接退出即可。此时打开 Windows 的“服务”窗口WinR 输入services.msc能看到名为MySQL57的服务状态应该是“正在运行”。如果状态不是运行中先别急着反复点启动跳到后面第 5 章的排查思路。4. 装完别急着跑环境变量、服务管理与首次连接4.1 配置环境变量让 mysql 命令全局可用MSI 安装完成后你打开命令行输入mysql大概率会提示“不是内部或外部命令”。这不是装错了而是系统不知道去哪找mysql.exe。MySQL 的客户端工具都在安装目录的bin子目录里把bin目录加进系统 PATH 环境变量以后在任意目录下都能直接用。具体操作右键“此电脑”-“属性”-“高级系统设置”-“环境变量”。在下方“系统变量”区域找到Path双击编辑。新增一条填写你的 MySQL bin 目录实际路径例如D:\MySQL\Server\bin。确定保存后重新打开一个命令提示符窗口输入mysql --version能看到mysql Ver 14.14 Distrib 5.7.44之类的输出就成功了。这里有个小细节环境变量修改后已经打开的 cmd 窗口不会自动刷新很多人改完直接切回旧窗口测试发现还是提示找不到命令就以为没改成功。重新开一个窗口就好了。4.2 服务状态的三种查法Windows 下的 MySQL 服务管理有三种常用方式服务管理器WinR 输入services.msc找到MySQL57右键能启动、停止、重启。sc 命令在管理员 cmd 中输入sc query MySQL57可以查看服务的运行状态和进程 ID。net 命令管理员 cmd 中输入net start MySQL57启动服务输入net stop MySQL57停止服务。我不建议直接taskkill杀掉 mysqld.exe 进行粗暴停止那样可能造成数据文件损坏。正确做法永远是通过服务管理器或net stop优雅停止。如果你想确认服务是否真的在监听端口可以执行netstat -ano | findstr 3306能看出一条LISTENING状态的记录说明 MySQL 已经在 3306 端口正常监听。这条命令同时还能用来排查端口冲突后面会用到。4.3 第一次连接并建库建表服务跑起来后打开命令提示符登录mysql -uroot -p输入你在安装时设置的 root 密码。看到Welcome to the MySQL monitor就表示连接成功。然后可以执行这些基础命令确认安装状态SELECT VERSION(); SHOW DATABASES;5.7 正常安装后默认会有四个库information_schema、mysql、performance_schema、sys。接下来顺手建一个测试库和测试表确认读写都正常CREATE DATABASE demo DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE demo; CREATE TABLE user ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) ); INSERT INTO user(name) VALUES(测试中文); SELECT * FROM user;如果插入的数据是正常中文查询也能原样显示说明服务端字符集没问题。如果显示成乱码说明字符集可能还是latin1需要到my.ini里强制指定。顺带提一句在 cmd 里连 MySQL 时如果看到中文乱码可以在登录命令后面加--default-character-setutf8mb4mysql -uroot -p --default-character-setutf8mb4这样能规避多数客户端显示乱码问题。5. 安装过程中最常见的坑日志、端口与密码恢复5.1 服务起不来的排查第一步看错误日志MySQL 服务启动失败是最常见的安装后问题。现象通常是服务管理器里启动按钮点一下过几秒弹窗提示“Windows 无法启动此服务”或者net start提示“服务无法启动”。这时候千万不要反复点启动正确的做法是看错误日志。错误日志文件一般叫主机名.err位置在数据目录下。如果你没改过数据目录MSI 默认放在C:\ProgramData\MySQL\MySQL Server 5.7\Data\里。注意ProgramData是隐藏文件夹资源管理器里要开启“显示隐藏的项目”才能看到或者直接在路径栏输入%ProgramData%\MySQL\MySQL Server 5.7\Data\。用记事本打开.err文件看最后几十行重点关注[ERROR]开头的记录。常见有这么几类Cant start server: Bind on TCP/IP port端口被占用了。Cant open the mysql.plugin table数据目录初始化不完整。Unknown optionmy.ini里写了不认识的参数或者格式错误。Cant find messagefile安装路径和配置里的 basedir 对不上。日志会精确告诉你哪里出了问题比在安装向导里无头苍蝇一样重试高效得多。这条经验跑过几次就知道遇到 MySQL 起不来第一时间看日志而不是重装。5.2 ZIP 版初始化流程与端口占用处理如果走的是 ZIP 版安装流程和 MSI 有几个关键差异。以下是一套经过验证的 ZIP 版部署流程适合需要离线复制安装包或自定义所有路径的人将mysql-5.7.44-winx64.zip解压到D:\mysql-5.7.44-winx64。在解压目录下新建my.ini内容参考[mysqld] basedirD:/mysql-5.7.44-winx64 datadirD:/mysql-5.7.44-winx64/data port3306 character-set-serverutf8mb4 collation-serverutf8mb4_general_ci注意路径分隔符建议用/或者写成转义后的\\保存文件时编码选UTF-8 无 BOM不要用记事本默认的 ANSI 去存含中文注释的配置否则启动时可能报读取配置错误。以管理员身份打开 cmd进入 bin 目录cd /d D:\mysql-5.7.44-winx64\bin mysqld --initialize-insecure--initialize-insecure会创建数据目录并把 root 密码初始化为空。另一条mysqld --initialize会生成一个临时密码日志里会打印出来新手找起来容易慌所以本地开发我推荐用前者。初始化完成后注册 Windows 服务mysqld --install MySQL57启动服务并登录net start MySQL57 mysql -uroot -p因为 root 密码是空的提示输入密码时直接回车即可。登录成功后立即改密码ALTER USER rootlocalhost IDENTIFIED BY 你的新密码;如果出现端口占用的情形可以先定位占用进程netstat -ano | findstr 3306最后一列是占用端口的进程 PID再用tasklist | findstr PID就能看到是哪个程序。如果是老旧残留的 MySQL 服务占着端口就把那个服务停掉再启动新的如果是业务程序占用又不想动就在my.ini的[mysqld]段把端口改成3307重启服务后连接时用-P3307参数。另外初始化时机很关键。如果data目录已经存在执行初始化会报Data directory is not empty。这时要么删掉整个datadir目录再重新初始化要么把目录改名备份。不要试图只删除几个文件系统库不全照样启动不了。5.3 忘记 root 密码后的标准恢复流程用 5.7 的人里十个至少有一个会在某天忘记 root 密码。恢复原理是让 MySQL 以跳过授权验证的模式启动然后重新设置密码。一定要记住恢复后把跳过验证的配置关掉。步骤停止 MySQL 服务net stop MySQL57编辑my.ini在[mysqld]段加一行skip-grant-tables重新启动服务net start MySQL57登录时不需要密码提示输入密码直接回车mysql -uroot -p进入后执行use mysql; flush privileges; ALTER USER rootlocalhost IDENTIFIED BY 新密码; flush privileges;如果你的 MySQL 5.7 因为某种原因不支持ALTER USER也可以用传统写法UPDATE user SET authentication_string PASSWORD(新密码) WHERE User root; flush privileges;修改完成后务必把my.ini里的skip-grant-tables这一行删除或注释掉再重启服务。用新密码重新登录确认。特别提醒skip-grant-tables只用于故障恢复绝对不能当成日常配置一直挂着。在这个模式下任何能登录到本机的人都可以无密码进入数据库安全风险极高。恢复完密码后第一件事就是把这一行去掉。最后再说一个我自己一直保留的小习惯装完 5.7 后顺手在my.ini的[mysqld]段加上max_allowed_packet64M再强调一次字符集配置character-set-serverutf8mb4。前者能避免以后导入稍大的 SQL 文件时报Packet too large后者能省去一堆中文乱码的烦恼。改完配置文件后记得重启服务再验证。数据库安装这种事步骤本身并不复杂复杂的是出错之后能不能顺着日志发现问题。希望这篇教程能让你少走几步弯路。
返回列表