1. 下载前的思路准备:先想清楚你要装哪个版本
做这行这么多年,最怕看到两种情况:一种是新同学上来就点“Download”按钮,装完才发现装了个根本没有长期支持的版本;另一种是还在用5.x的一堆老配置教程,结果装MySQL 8的时候照猫画虎,最后连服务都起不来。所以这篇我就从头捋一遍,直接把MySQL 8的下载安装路径走完整。
MySQL 8这个版本,从2018年GA(General Availability)到现在已经非常成熟了。跟5.7比,它的默认字符集换成了utf8mb4,原生支持窗口函数和CTE(公用表表达式),还有数据字典重构、隐藏索引、降序索引这些实打实的东西。更重要的是,8.0.x官方会持续维护更新到长期支持生命周期结束,你下载安装时直接选8.0系列的大版本,不要选那些奇怪的像8.4之类的创新版本后缀。教程里说的“MySQL8”,指的就是官方命名的“MySQL Community Server 8.0.xx”这种带小版本号的发行版。
适合谁看呢?首先是刚接触数据库的小白,想在自己的Windows电脑上装一个本地MySQL环境,用来练习SQL或者做课程设计;其次是做开发的朋友,需要在本地起一个和线上环境大版本一致的数据库,方便调试;还有一些运维同学,帮别人排查安装问题之前,自己得先把这套流程走通。后续我会把下载链接入口、每一步点击路径、每个配置项的含义,以及装完以后的验证方式全都写清楚。
2. 下载环节拆解:官方网站应该怎么逛
2.1 官方下载入口和镜像站怎么选
搜索“MySQL8下载”出来的结果,前几页基本都是官方域名mysql.com或者dev.mysql.com,这没问题,认准官方地址就行。但有些朋友说“官网下载太慢了,几十兆的文件卡半天”,那就要用国内镜像。用镜像的前提是:镜像源必须同步官方发行版,并且校验码要和官方一致。常见的稳定镜像有阿里云镜像站、清华大学开源镜像站,路径一般是mysql/downloads/MySQL-8.0/或者mysql-8.0.xx-winx64.zip这类目录。有一点要注意:某些私人搭的下载站会把安装包打包进一堆推广软件,装MySQL给你带个全家桶,这种坑我实在见得太多,宁可在镜像站多等几秒也别去那种站点下载。
从官网下载的路径是这样:打开 dev.mysql.com/downloads/installer/,能看到两个大入口:
- Windows (x86, 32-bit), MSI Installer
- Windows (x86, 64-bit), MSI Installer
往下的“MySQL Installer”这个东西,是把服务器、客户端工具、文档、样例库全部集中在一个安装向导里。第一次接触的人可能会被它的组件选择搞晕,所以我给个建议:如果你只是想装一个MySQL Server方便命令行或客户端连接,就选那个体积较小的MySQL Installer Community里的“Server only”模式,装完基本够用;如果你是想在开发时顺手用自带的Workbench图形工具、MySQL Shell之类的,那就在组件列表里勾上。
2.2 社区版和商业版的区分选择
官网的下载首页喜欢放一个很显眼的大按钮叫“MySQL Installer for Windows”,点进去以后还有一个“Windows (x86, 32-bit), MSI Installer / Windows (x86, 64-bit), MSI Installer”的选择。这里注意一下,业界常说的“MySQL8免费版”指的是MySQL Community Server,全名叫“MySQL Community Edition”。它和商业版“MySQL Enterprise Edition”的区别主要在插件、监控、备份工具、技术支持这些增值部分,核心的InnoDB引擎、SQL语法、复制能力都是一样的。
所以你不要在下载页被“Commercial”“Enterprise”这些标识带偏,认准“Community”字样的下载链接就行。安装包文件名格式通常是mysql-installer-community-8.0.xx.0.msi或者压缩包mysql-8.0.xx-winx64.zip。前者是可视化安装向导,适合新手;后者是免安装zip版,适合喜欢手动控制的人。我这个教程主要走MSI安装向导路线,zip的配置方法我也会在后文里带一句。
2.3 我推荐选的下载版本参数
下载时如果你点“Go to Download Page”,页面会列出一堆具体版本号和平台文件。以8.0.xx为例,常见的有:
| 文件类型 | 文件名示意 | 使用场景 |
|---|---|---|
| MSI安装包(建议) | mysql-installer-community-8.0.36.0.msi | 带图形向导,装完自带配置工具 |
| ZIP免安装包 | mysql-8.0.36-winx64.zip | 手动配置,适合优雅洁癖和自动化脚本 |
| 调试符号包 | mysql-8.0.36-winx64-debug-test.zip | 开发调试用,普通用户不需要 |
MSI文件通常有300多MB,ZIP压缩包也在200MB左右,这是正常的,因为里面包含了Server、客户端、共享库等等一堆组件。你下载的时候注意看版本号后面有没有“RC”“DMR”这种字样,那代表发布候选版或开发里程碑版,不建议生产环境或者初学安装用,等GA的正式版就好。
3. 安装全程拆解:每一步到底在弹什么窗口
3.1 安装模式选择:完整安装还是自定义?
双击MSI文件以后,安装程序会先做一个系统检查。这个检查主要看你机器上有没有装Visual C++ Redistributable之类的运行库,因为MySQL 8的Server组件依赖它。如果检查结果显示某项缺失,一般安装包会装在过程中自动帮你补上,实在缺的话就去微软官网下载对应的VC运行库,别跳过。
接着会进入安装类型选择界面,一般有这几个选项:
- Developer Default:会安装Server、Shell、Router、Workbench、样例等一整套,适合要做完整开发的人,但装完体积大,启动项多。
- Server only:只装服务器核心,最干净,适合只需要一个数据库服务的学习和测试场景。
- Custom:手动勾选需要的组件,后续可随时增减。
我推荐新手选Server only。原因很简单:第一,Workbench这类图形工具后续随时可补装,没必要刚开始就把一堆东西都堆上去;第二,组件越多,出问题的排查面越大,尤其是Router、Connector/Python这类可能跟系统已有环境冲突的东西。如果你实在需要图形化操作界面,装完Server后再单独安装MySQL Workbench即可。
3.2 安装进度、版本升级和典型坑点
选完模式后,安装程序会先“Check Requirements”,检测缺少的依赖项。这里有个坑:很多人电脑上的微软运行库版本比较乱,安装包会提示需要“Microsoft Visual C++ 2019 Redistributable”或更高版本。遇到这种情况,别纠结,去下载最新的x64版运行库安装重启,再回来继续。
依赖检查通过后会进入“Installation”界面,直接点“Execute”,然后就是等进度条。MSI安装器会把所有选中的组件按顺序装到C:\Program Files\MySQL\目录下。这一步有几个常见现象:
- 进度条卡在某个组件上长时间不动:多半是运行库冲突或权限不够,右键MSI文件“以管理员身份运行”即可。
- 提示“A Windows service with the name MySQL already exists.”:说明你之前的MySQL卸载不干净,下文第5节会给处理方案。
- 安装到末尾提示回滚,然后日志里出现“failed to start service”:通常是3306端口已经被占用了,或者本地没有Administrator权限执行服务安装。
如果一切顺利,安装向导会自动进入“Product Configuration”环节,也就是配置MySQL Server的实例了,这是整个安装过程最容易出错的地方。
3.3 配置MySQL Server:类型、端口、认证方式
在安装器进入“Type and Networking”界面时,你会看到几个关键选项。
Config Type:
- Development Machine:开发机,占用内存默认较小,官方建议。
- Server Machine:服务器类用途,会使用更多内存。
- Dedicated Machine:专门作为数据库服务器的机器,会尽量利用现有内存。
个人电脑选Development Machine即可,这个选项影响的是MySQL使用的内存占用量和InnoDB缓冲池大小,不是有没有某项功能。
Connectivity:
- 默认端口是3306,除非你确定这个端口被占用,否则不要乱改。改了端口,后续所有连接命令和客户端连接串都要跟着改,凭空增加麻烦。
- “X Protocol”端口是33060,这是MySQL 8里用来支持X DevAPI的,如果你用不到文档型操作,可以不管它,但默认勾选的选项最好不要手动去取消,免得后续连接Workbench时找不到服务。
Authentication Method: 这一步是MySQL 8和老版本最大的区别之一。MySQL 8默认的认证插件是caching_sha2_password,而不是5.x时代的mysql_native_password。弹出的内容一般有两种选择:
- Use Strong Password Encryption (RECOMMENDED):对应caching_sha2_password,安全性更高。
- Use Legacy Authentication:对应mysql_native_password,给老客户端兼容用的。
如果你用的是新版Navicat、DataGrip、mysql命令行客户端,选第一个推荐选项完全没问题;如果你手头有一个很老的程序,用的还是老旧的数据库驱动版本(比如PHP 5.x时代的mysqlnd),连不上时才需要考虑选第二个。但一般情况下,我不建议一上来就选Legacy,因为MySQL官方在8.0.34之后已经开始标记mysql_native_password为废弃插件,新装环境走强加密才是长久之计。
3.4 密码设置和Windows服务配置
接下来是“Accounts and Roles”界面,这里要设置root 用户的密码。还没进入系统前,root是唯一的超级管理员账号,密码强度建议是混合大小写字母加数字加符号,长度不少于8位。密码忘了会很麻烦(重置过程涉及跳过授权表、重启服务等操作),所以最好是记在密码管理工具里,别只存在脑子里。
同页面还能添加其他用户,比如新建一个普通账号dev用来日常连库,这样root密码就可以放心锁起来。配置服务时注意:
- “Windows Service”选项里,服务名称默认叫
MySQL80,这个名字后面启动、停止、卸载服务都会用到。 - “Start MySQL Server at System Startup”建议勾上,免得重启电脑后还要手动开启服务。
- “Standard System Account”是默认选项,走Windows系统账户运行服务,不要随意改成自己改密码的账户,否则系统密码换了MySQL服务就起不来了。
设置完这些,点“Execute”,安装程序会开始应用配置。配置完通常还会让你选择是否启用“MySQL Router”之类的组件,这个不需要就直接略过。随后安装器宣布完成,Stage结束,就能看到“Finish”按钮了。到这里,可视化安装的流程就走完了。
4. 装完后的初始化验证与环境变量配置
4.1 服务启动和命令行连接的正确姿势
装完先别急着打开各种图形工具,先把服务确认起来。按Win + R,输入services.msc,在服务列表里找到MySQL80,看状态是否是“正在运行”。如果状态是空白,右键手动“启动”,启动失败的话去看Windows事件查看器里的应用程序日志,具体原因多半是权限或配置文件写坏了。
服务正常后,打开命令行验证是否真的能连上。MySQL 8安装完后,在C:\Program Files\MySQL\MySQL Server 8.0\bin目录下有mysql.exe,最稳妥的方法是先切到这个目录再执行:
mysql -uroot -p输入密码后如果看到Welcome to the MySQL monitor.的提示符,说明安装成功。如果你装的时候选了“密文强加密”,命令行登录后可能提示需要重置密码策略,但这不影响登录验证。
平时频繁使用mysql命令的话,建议把MySQL的bin目录加到系统环境变量Path里。步骤是:右键“此电脑” → 属性 → 高级系统设置 → 环境变量 → 在“Path”里新建一条,填入C:\Program Files\MySQL\MySQL Server 8.0\bin,然后新开一个命令行窗口,就能直接敲mysql -uroot -p了。不配置环境变量也不影响安装本身,只是每次都要带全路径,略烦。
4.2 查询版本和关键参数:确认装的确实是MySQL 8
登录成功后再执行几个命令确认版本:
SELECT VERSION(); SHOW VARIABLES LIKE 'port'; SHOW VARIABLES LIKE 'character_set_server';SELECT VERSION()如果显示8.0.xx,就说明当前就是MySQL 8。端口变量一般显示3306,字符集会看到utf8mb4,这也是MySQL 8默认的。
顺手看一下引擎状态:
SHOW ENGINES;能看到InnoDB的Support列是DEFAULT,说明默认存储引擎没问题。如果这些结果都对,那整条安装链路就是通的。
4.3 ZIP免安装版的配置要点(手动党必看)
这里额外讲一下ZIP版。如果你下载的是mysql-8.0.xx-winx64.zip,解压以后目录里只有一个精简的bin目录和一堆文档,没有安装向导,需要手动做三步:
第一,在解压目录下新建一个my.ini配置文件,典型内容:
[mysqld] basedir=C:/mysql-8.0.36-winx64 datadir=C:/mysql-8.0.36-winx64/data port=3306 character-set-server=utf8mb4 default-authentication-plugin=caching_sha2_password我记得以前5.7时代很多人写default_authentication_plugin,但MySQL 8里有些版本用下划线写法已经提示废弃,统一用横线写法最省事。
第二,以管理员身份打开命令行,切换到bin目录,执行初始化命令:
mysqld --initialize-insecure注意:我推荐用--initialize-insecure,它会创建一个root空密码账号,方便登录;而mysqld --initialize会随机生成一个极其复杂的临时密码,写在日志文件里,新手找半天都找不到。
第三,注册Windows服务:
mysqld --install MySQL80 --defaults-file="C:/mysql-8.0.36-winx64/my.ini" net start MySQL80ZIP版的好处是目录可以放在任何盘符,迁移和备份非常方便;坏处是配置文件写错一点,服务就启不动,对新手门槛略高。所以能用MSI向导,就别折腾ZIP。
5. 常见安装问题排查与避坑手册
5.1 无法安装:服务已存在或卸载残留
卸载MySQL或者说重装时最常遇到的问题是:“The service 'MySQL80' already exists.” 这通常是因为之前装过的服务没删干净。解决方法是:管理员身份打开命令提示符,执行:
sc delete MySQL80然后检查C:\Program Files\MySQL目录是否还残留文件,有的话手动删除。还要检查注册表中是否残留:
regedit路径在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL80,如果存在就删除这个项,然后再重新安装。这一步操作有一定风险,删之前先看一眼确认是MySQL的服务项,别误删其他东西。
5.2 安装后服务无法启动
服务能装上但启动秒失败,十有八九是配置或权限问题。先看错误日志,Windows事件查看器 → Windows日志 → 应用程序,找到Source为MySQL的错误信息。常见两种情况:
[ERROR] [MY-010123] Can't create test file:说明datadir指向的目录没有写权限。检查my.ini中datadir对应的文件夹是否给了当前服务账户读写权限。MSI安装会默认处理好,ZIP手写配置时极易出现。[ERROR] [MY-013276] Failed to initialize DD storage engine:大概率是data目录里的旧文件残留,和当前初始化信息不一致。把data目录内容清空(先备份),重新执行初始化命令即可。
还有一种常见误导:启动时提示端口被占用。在命令行执行:
netstat -ano | findstr :3306查到占用进程的PID后,到任务管理器核实这个进程是什么,如果不是必要服务,可以停掉它,或者改MySQL端口到3307,避免冲突。
5.3 客户端连接报错:认证插件问题
装完MySQL 8,通过Navicat或老版本的图形工具连接时,可能报这种错误:
Authentication plugin 'caching_sha2_password' cannot be loaded
或者驱动里报“Public Key Retrieval is not allowed”。原因是MySQL 8默认使用caching_sha2_password,但老客户端不支持。处理办法有两个:
方案一:更新客户端工具。Navicat 16、DataGrip、MySQL Workbench近三年版本基本都兼容。
方案二:如果必须用老客户端,可以把某个用户改回传统认证插件:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;但我想强调一点:不要把整个系统改回Legacy认证,尤其在生产环境,安全性和官方支持动态都要保证。只针对个别用户降级是妥协且可行的,其他账号保持强加密。
5.4 输入的密码总是报错:密码策略和默认密码
初始化后第一次登录,报Access denied for user 'root'@'localhost',不用急着怀疑密码写错。大多数情况是:
- MSI安装时你设置了密码,但密码还没生效,需要重新执行一次安装配置。回到MySQL Installer,选择“Reconfigure”重新配置实例。
- 或者你用的是ZIP版
mysqld --initialize-insecure初始化的,root密码为空,那么命令行连的时候直接不输入密码,回车即可。
MySQL 8默认密码策略是validate_password插件控制的,强度要求中等级别,密码小于8位直接给你红叉。想临时降低策略,可以登录后执行:
SET GLOBAL validate_password.policy = LOW;但这也是改配置的一种,建议还是老老实实用合规强度的密码。
5.5 中文乱码和时区相关的坑
登录后建表,插入中文变成问号,十有八九是字符集问题。MySQL 8虽然默认服务器字符集是utf8mb4,但建库建表时如果不显式指定,有的客户端连接时会把连接字符集改成latin1,导致写入时报错或乱码。
解决办法是在连接串里加上:
?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai或者MySQL命令行登录后执行:
SET NAMES utf8mb4;时区那块,MySQL 8默认时区是SYSTEM,如果你连接的Java应用报时区异常,在连接串上显式指定serverTimezone=Asia/Shanghai就行,不用去改全局时区变量。
6. 安装完成后的环境加固和日常维护建议
6.1 调整密码强度和创建专用账号
装好以后别急着拿root账号到处连。root是管理员,日常开发应该用一个权限较小的专用账号。创建账号并授权的方式:
CREATE USER 'dev'@'localhost' IDENTIFIED BY 'Dev_123456'; GRANT ALL PRIVILEGES ON mydb.* TO 'dev'@'localhost'; FLUSH PRIVILEGES;这样即使账号泄露,影响范围也限制在mydb这个库。同时可以检查一下当前有哪些用户:
SELECT user, host FROM mysql.user;发现异常账号及时删掉。
6.2 备份、日志和防火墙
MySQL 8的备份常用mysqldump,比如:
mysqldump -uroot -p --single-transaction --default-character-set=utf8mb4 mydb > mydb_backup.sql这个命令在Windows下也能直接用。另外,如果你的Windows防火墙开了,3306端口默认是会被拦截的,本地连接不受影响;如果需要局域网内其他机器连接这个MySQL,就要在防火墙里放行3306端口。放行前先确认你的MySQL服务确实需要对外暴露,不要无缘无故把数据库端口暴露到外网,安全方面省不得。
6.3 升级小版本和卸载残留清理
MySQL 8.0的后续小版本升级很简单:下载新一版的MSI安装包,双击后选择“Upgrade”,安装器会保留原有数据目录,升级Server程序。升级前先备份数据和配置文件,这步是铁律。ZIP版的升级稍微麻烦,替换bin目录后,可能还要手动执行mysql_upgrade -uroot -p来确保系统表和字典跟新版本匹配。8.0.x版本的升级工具其实在很多场景已经自动化,但手动检查一遍更稳妥。
卸载时如果以后还想装回来,记住:用MySQL Installer里的“Remove”卸载,而不是简单删除目录。卸载完成后再把安装目录、数据目录(一般在C:\ProgramData\MySQL)和MySQL服务注册信息清理掉,才能做到干净环境重装。
7. 我的实操体会:装数据库这件事,慢就是快
装完一遍MySQL 8以后,你可能会觉得大部分时间都花在等待下载和查看配置项上,真正“安装”动作本身没几下。我的感受是:每个选项背后都有对应的场景,理解了场景再点按钮,比拿来一个一键脚本敲下去要靠谱得多。比如认证插件那个选择,很多人觉得“选推荐项”就好了,但如果你的工作内容是被逼用Navicat 11这种老古董,你就得多折腾半小时。
另外一个小技巧:下载安装包的时候,顺手把版本号和安装日期记在桌面或者笔记里,比如mysql-8.0.36-today。因为几个月后你可能会遇到一个线上环境,需要复现本地相同的数据库版本,那时候你不会记得自己装的是哪一个小版本。把这类信息记录下来,以后排查问题能省很多时间。
MySQL 8的安装流程到这里基本就走完了:官网下载,MSI安装,配置实例,验证服务,排查问题,加固使用习惯。每一步看着简单,但真上手时上下文很多,能静下心一步步看清楚选项含义的人,装出来的实例通常就是最稳的。最后分享一个小经验:不要在下午犯困的时候配置数据库密码,我见过太多人把密码设成了一摸一样的系统用户名或123456,然后一天之内就被扫描爆破。密码这关,认真一点。