news 2026/10/3 3:45:58

MySQL 9.0在Windows上的完整安装与排错实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 9.0在Windows上的完整安装与排错实战指南

前几天一位朋友让我远程帮忙在他的Windows机器上装MySQL 9.0,他以为这是个简单活儿,结果我们两个人折腾了快两个小时——安装向导能正常跑,但配置阶段总是报错退出。最后发现问题基本都出在环境清理和版本理解上,跟安装包本身关系不大。

MySQL 9.0是2024年7月发布的Innovation版本,官方跳过9.0之前的几个小版本直接升到了大版本号。很多人第一反应是“大版本更新了,是不是安装方式也改了”,实际用下来,如果你只是想在Windows上装一个单机实例做开发测试,9.0的安装流程和8.0其实没有本质差异。但有几个细节,比如默认认证插件的变化、安装程序对依赖环境的检测方式、旧版本客户端工具的兼容性,确实和以前不一样。这篇文章就把我这次安装的全过程、每一步的选择逻辑、以及踩过的几个坑都整理出来,给准备在Windows上装MySQL 9.0的朋友一份可以直接照着走的参考。

1. 先搞清版本路线:9.0到底能不能直接用

1.1 Innovation版本和LTS版本意味着什么

MySQL从8.0之后调整了发布策略。你登录官网下载页面时会看到两个系列:一个是LTS(Long Term Support)版本,目前对应的是8.4;另一条就是Innovation版本,也就是9.0、9.1、9.2这一串。LTS版本维护周期长、主打稳定,适合生产环境;Innovation版本大约每几个月发一个新版本,优先把新功能铺到社区,但维护期短,下一个Innovation出来之后就进入维护末期了。

这意味着如果你要在Windows上装MySQL 9.0,首先要明白它不是奔着“长期稳定”去的。单机开发、学习、测试新技术,用9.0没有任何问题。生产库、线上业务,建议老老实实留在8.4或继续用8.0。很多人看到9.0就觉得“最新版肯定最好”,这种想法在数据库这类基础软件上是有风险的——我自己就见过有人把生产环境的MySQL从8.0直接升到9.0,最后因为配置项不兼容临时回滚的情况。

1.2 和8.0/8.4相比,9.0动了哪些底层东西

9.0在Windows上的安装过程和8.0几乎一样,安装向导、服务注册、数据目录结构都没变。真正变化的是数据库内核层面的一些默认行为和删除项:

  • mysql_native_password认证插件被移除。8.0时代还是默认插件,8.4里开始标记弃用,9.0直接删掉。这意味着老版本客户端如果只认native_password,连上来会直接报认证插件加载失败。
  • 一些长期废弃的配置项和命令被清理,比如旧的redo log相关参数、部分旧版兼容SQL模式选项。
  • 默认字符集和排序规则延续了8.0后期的策略,依然是utf8mb4和utf8mb4_0900_ai_ci。

这些变化对纯安装使用没有直接影响,但对“装完之后的连接环境”影响很大。很多人在Windows上装完MySQL,习惯用老版本的Navicat或者旧版JDBC驱动去连,9.0的环境下就容易踩认证方式不对的坑,我在后面单独展开讲。

1.3 适合在Windows上安装9.0的人群

如果你现在就准备在Windows机器上安装9.0,我建议你对照一下自己的场景:

  • 纯学习、验证新语法、测试新特性:可以直接上9.0。
  • 做项目开发环境,且项目生产环境还是8.0:建议装8.4或8.0,避免本地和线上行为差异。
  • 需要连接老客户端的遗留工具链:先用8.4,等工具链升级完再考虑9.0。

我当时帮朋友装的场景是“新电脑上跑一些实验性数据脚本”,所以直接选了9.0,安装本身很顺利,后续的所有麻烦都来自环境里已有的一些服务和管理习惯。

2. 下载和安装前的三道准备检查

2.1 官方网站下载:安装包到底选哪个

MySQL的Windows安装包放在Oracle官网的MySQL Community Downloads页面,路径是:MySQL Community Server下载区。进去之后选择Microsoft Windows平台,能看到两类包:

  • MySQL Installer(MSI):图形化向导安装,推荐给大多数Windows用户。
  • ZIP Archive:解压即用,适合做免安装绿色版或者批量部署脚本。

同一页面还会让你选“Download Latest”还是“Download Archives”。如果你要装9.0,就直接下最新版页面里带9.0字样的MSI安装包就好。注意一个细节:Installer也分大小,有个几百KB的web installer,运行时会联网下载组件;还有个完整版离线包(通常一两百MB),遇到网络比较差的机器,我建议直接下离线包。我之前在网速不稳定的场景装过一次web installer,下载组件失败了好几次,最后还是专门拉了离线包才装完。

2.2 ZIP压缩包和MSI安装程序的取舍

MSI安装程序会替你处理初始化配置、Windows服务注册、环境变量设置,适合不想跟命令行折腾的人。ZIP包更适合“我明确知道自己要什么”的场景。

如果你选ZIP包,安装过程全手写,大概是这样:

1. 下载zip包,解压到 D:\mysql-9.0 2. 在解压目录下手动创建 my.ini 或直接复制一份默认配置 3. 以管理员身份打开CMD,进入 bin 目录 4. 执行 mysqld --initialize-insecure 5. 执行 mysqld --install MySQL9 6. 执行 net start MySQL9

这个过程并不复杂,但对新手来说,任何一个步骤错了排查起来都比MSI版本更花时间。我自己的倾向是:开发机、服务器,用MSI;临时环境最多用ZIP。后面具体展开的安装流程,也是基于MSI方式来讲。

2.3 前置环境检查清单

MSI安装本质上会触发一系列Windows操作,包括安装Visual C++运行库、创建Windows服务、写数据目录。所以安装前先检查这几项,能帮你省掉后面大量排错时间:

  • 是否已安装Visual C++ Redistributable(2015-2022 x64)。MySQL Installer一般会自动检测并安装,但如果你系统环境比较精简,可能安装程序启动阶段就卡住。
  • 3306端口有没有被占用。Windows上很常见的是装了旧版MySQL、MariaDB,或者某些软件自带了一个MySQL实例。安装前用netstat -ano | findstr :3306看一眼最直接。
  • 是否有残留的MySQL数据目录。默认路径是C:\ProgramData\MySQL,如果你之前装过MySQL但没卸载干净,新实例初始化时可能碰到权限或文件冲突。
  • 当前Windows账号是否有管理员权限。没有管理员权限的话,服务注册这一步必挂。
  • 关闭杀毒软件对系统目录的实时监控。Windows Defender或第三方卫士软件有时候会锁住数据文件写入,导致安装过程诡异失败。

这些检查看起来都是老生常谈,但我那次帮朋友排查到最后,发现他机器上就是残留了一个旧MySQL的数据目录没清理,导致9.0的安装程序在配置阶段反复回滚。环境问题永远比安装包本身更值得先排查。

3. 安装向导全流程:每个选项都讲透

3.1 安装类型选择的真实差异

双击MSI后,MySQL Installer会要求你选择安装类型。常见选项有:

  • Developer Default:开发机推荐,会装MySQL Server、Workbench、Shell、Router、Visual Studio插件、ODBC驱动等一堆组件。
  • Server only:只装服务端。
  • Custom:手动勾选组件。
  • Full:把家族套件全装上。

如果你只是要一个数据库服务,选Server only就够了。选Developer Default会多装很多用不到的东西,比如MySQL Router、VS Code插件、Python连接器、文档等,这些组件之间还有依赖关系,装完占用磁盘空间不小,升级也麻烦。我平时自己的机器选Custom,只勾选MySQL Server和MySQL Workbench(或者干脆不勾Workbench),保持环境干净。

这个页面还有一个容易忽略的点:底部会提示“Check Requirements”,也就是检查当前系统缺少的运行依赖。如果这里报出“缺失需要安装的软件包”,先在这里解决。常见的是缺Visual C++运行库,Installer会列出来,点击旁边的Execute直接补装即可。

3.2 实例配置与端口占用检查

组件安装完之后,向导进入“Configuration”阶段。MySQL Server配置页面会让你选配置类型:

  • Development Machine:按开发机资源预估内存占用。
  • Server Machine:给常驻运行的服务预留更多资源。
  • Dedicated Machine:都是MySQL,资源给到最大。

这个选项影响的是InnoDB缓冲池等默认参数大小。所以选“Development Machine”就行,别管字面意思。除非这台机器就是专门跑MySQL给几十个人用的,才需要选后面两个。

接下来是Connectivity部分,默认勾选TCP/IP,端口默认3306,并启用X Protocol端口33060。这里你需要检查一下3306端口是否可用。可以直接展开“Advanced Configuration”查看具体监听配置。如果你机器上本来就跑着别的MySQL实例,建议在这台机器上换个端口,比如3307,免得之后起服务的时候端口冲突。

这一步的细节决定成败。我见过太多人在这一步直接下一步,结果安装完后服务起不来,再回头查才知道是端口被占了。

3.3 认证方式与root密码策略取舍

接下来是Authentication Method的选择。9.0安装向导上会显示两个选项:

  • Use Strong Password Encryption(推荐,使用caching_sha2_password)
  • Use Legacy Authentication(使用mysql_native_password)

重点来了:虽然安装向导在9.0里还保留着Legacy选项,但实际版本里mysql_native_password插件已经被移除。如果你选了Legacy Authentication,配置阶段很可能直接失败,或者连上服务后无法完成认证。所以在9.0环境下,老老实实选Strong Password Encryption,然后用支持caching_sha2_password的客户端连库。

root密码的设置页有几个管理习惯可以参考:开发环境可以设置纯数字或简单密码,但生产环境必须强密码。安装向导还提供一个“Create Root User Account”和一个“Add User”的功能,后者可以顺便建一个普通账号。建议在这里把普通账号先建好,之后不要全用root去连库。

3.4 Windows服务安装细节

然后是Windows Service配置页,向导会问你:

  • 是否把MySQL配置为Windows服务
  • 服务名称,默认是MySQL90
  • 是否随系统启动自动启动
  • 是否以标准系统账户或自定义账户运行

这里我的建议是保持“Start the MySQL Server automatically”打勾,因为一个数据库中途中途关掉太折腾了。服务名保持默认即可,如果你机器上已经存在MySQL服务,建议改成MySQL90,避免重名冲突。

配置完成之后,安装向导会执行“Apply Configuration”,这一步包括初始化数据目录、写入配置文件my.ini、创建服务、启动服务。这一步如果长时间卡住或报错,通常不是安装包问题,而是之前我提到的环境残留或权限问题。后面专门讲排错链路。

4. 装完之后的验证与环境优化

4.1 命令行连一把数据库

安装向导提示配置成功并启动服务后,别急着开始用,先在命令行验证一遍:

打开新的CMD,执行:

mysql -u root -p

输入刚才设置的root密码,能进入mysql>提示符就说明服务正常。

再执行一条:

SELECT VERSION();

如果返回9.0.x,说明连上和版本都对。这时候再顺手看一下:

SHOW DATABASES;

默认应该能看到information_schema、mysql、performance_schema、sys四个库。如果出现这四张系统库,说明实例初始化完毕。

这个验证过程看起来简单,但它能帮你确定问题到底出在服务端还是客户端。很多人安装完直接打开GUI工具,连接失败就以为是安装没成功,其实服务端早就起来了,只是客户端工具和9.0的认证方式不兼容。

4.2 my.ini配置调整与生效

MySQL在Windows上的核心配置文件是C:\ProgramData\MySQL\MySQL Server 9.0\my.ini。安装向导生成的这个文件一般够用,但开发过程中很多人会需要调整字符集、时区、日志等。

我经常给新机器加的一段配置是这样的:

[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_0900_ai_ci default-time-zone='+08:00' sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION max_connections=200

改完my.ini之后必须重启服务才能生效:

net stop MySQL90 net start MySQL90

或者到服务管理器里点击重启。

这里有个值得注意的地方:C:\ProgramData\MySQL下的my.ini不一定是你唯一需要关注的配置。如果你之前在安装目录C:\Program Files\MySQL\MySQL Server 9.0\里也放过my.ini,两处配置容易互相掩盖,排查的时候先确认服务使用的是哪个文件。命令行下执行:

mysqld --verbose --help

可以看当前实例实际读取的defaults-file路径。

4.3 常用管理操作速查

装完之后日常最常用到的操作,我列一份简表:

操作命令或路径
启动服务net start MySQL90
停止服务net stop MySQL90
重启服务net stop MySQL90 && net start MySQL90
查看服务状态sc query MySQL90
登录数据库mysql -u root -p
查看端口监听netstat -ano | findstr :3306
服务管理器运行services.msc
配置文件C:\ProgramData\MySQL\MySQL Server 9.0\my.ini

另外,Windows上MySQL Shell(如果安装了)也是一个挺好用的工具,可以用传统的SQL模式,也可以用API方式操作,对测试9.0新特性比较方便。

5. 安装失败排查链路:从现象到根因

5.1 安装程序启动即崩溃的常见原因

现象是双击MSI之后,安装程序闪一下就没反应,或者跳出“应用程序无法正常启动”的报错。

第一嫌疑是缺Visual C++运行库。MySQL Installer本体依赖VC++的dll,系统如果缺少2015-2022版本的运行库,程序根本起不来。排查方式很简单:到“控制面板-程序和功能”里看有没有 “Microsoft Visual C++ 2015-2022 Redistributable (x64)”。没有就直接去微软官网下载最新的x64版本装上。

第二嫌疑是临时解压目录权限问题。MSI安装时会解压到%TEMP%目录,如果系统临时目录被安全软件锁死,或者当前账号没写权限,也会表现成启动即失败。解决方法是退出安全软件、以管理员身份重新运行。

还有一种情况是Windows日志里能查到错误,但界面上没有明确信息。这时候用Event Viewer(事件查看器)看Windows Logs下的Application日志,找红色错误项,往往能直接定位到是缺哪个模块。

5.2 配置阶段卡死的排查思路

安装向导走到“Applying Configuration”时卡住、报错、回滚,这是我遇到的最常见的失败场景。它发生在向导要把MySQL服务启动起来的那一刻,所以根源基本在三处:

第一,数据目录初始化失败。9.0初始化数据目录时会在C:\ProgramData\MySQL\MySQL Server 9.0\Data下写入系统表数据。如果该目录已存在旧文件、或权限不够、或被杀毒软件锁住,初始化就会失败。处理办法是备份旧数据后整个删除该目录,让向导重新初始化。

第二,3306端口被占用。安装向导启动服务时会尝试绑定3306,如果端口被别的进程占用,服务直接起不来。这时候执行:

netstat -ano | findstr :3306

看返回的PID是什么进程,去任务管理器对应确认。占用端口的是旧版MySQL或者MariaDB,要么把旧服务停掉并改端口,要么先把旧实例卸载干净。

第三,Windows服务注册失败。如果之前卸载过MySQL但服务没有删除干净,再注册同名服务可能报“服务已存在”。用下面命令查看:

sc query MySQL90

如果发现服务存在但状态不正常,可以把它删除后重来:

sc delete MySQL90

这时代理再执行一次配置步骤,通常能过。

5.3 连接失败:认证插件和客户端兼容性

安装成功后连不上数据库,报错多为“Authentication plugin 'caching_sha2_password' cannot be loaded”或者“Unable to load authentication plugin”。

这说明你用的客户端太老。MySQL 9.0默认认证插件是caching_sha2_password,而老版本工具(比如很老版本的Navicat、某些旧版JDBC驱动)不认识这个插件。以前8.0时代还能把默认认证方式改回mysql_native_password,但9.0已经把这个插件删了,所以这条路是走不通的。正确做法是升级客户端:

  • Navicat:升级到16以上版本(我实测Navicat 17连9.0没问题)。
  • JDBC驱动:至少升级到8.0.x的较新版本。
  • 其他GUI工具:优先选择持续更新、支持最新认证方式的工具。

如果你确实需要兼容一个老到不能再老的客户端,唯一无解的方案就是不要用9.0,退回8.4。这也是升级前要评估客户端工具链的原因。

5.4 彻底卸载重来的完整流程

如果安装过程已经坏到无法挽回,或者你决定卸载重装,别在“控制面板-卸载程序”里点一下就完事。MySQL的残留物才是下次安装失败的元凶。我自己的标准卸载流程是这样的:

  1. 以管理员身份打开CMD,停止服务:net stop MySQL90
  2. 删除服务:sc delete MySQL90
  3. 打开控制面板,卸载“MySQL Server 9.0”和“MySQL Installer”
  4. 删除安装目录C:\Program Files\MySQL
  5. 删除数据目录C:\ProgramData\MySQL
  6. 删除临时目录里的MySQL相关文件夹(%TEMP%下搜索mysql前缀的文件)
  7. 清理注册表。运行regedit,删除HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB(如果存在)
  8. 重启电脑,再重新安装

这套流程看起来多,但每一步都有必要。数据目录残留会导致新实例初始化垃圾数据,注册表残留会导致Installer误判已安装版本,服务残留会导致端口冲突。很多“装一次失败一次”的诡异情况,就是因为卸载不彻底。

6. 后续使用中的几个细节建议

6.1 客户端工具的选择与避坑

Windows上连MySQL的图形工具很多,除了官方Workbench,我日常最常用的是Navicat和JetBrains的DataGrip。Navicat 17对MySQL 9.0支持得很好,连接时认证方式选默认的caching_sha2_password就能通。DataGrip只要版本新,内置驱动可以自主替换,相对省心。

有一点要提醒:下载这类工具体量大的软件,尽量去官网。有些第三方下载站打包了旧版本,旧版本连9.0大概率会碰到认证问题,到时候问题绕一大圈还不知道出在哪。

6.2 开发环境的安全习惯

即便只是一台Windows开发机,装了MySQL之后也别完全不设防。安装时里的root密码不要用的过于简单。如果数据库监听需要暴露到局域网,建议单独建一个只开放必要权限的账号,给一个独立密码,root账号只允许本机登录。

还有个习惯是定期备份。开发环境的数据虽然不重要,但有时候重建环境很浪费时间。可以用mysqldump定期导出:

mysqldump -u root -p --all-databases > backup_20250101.sql

Windows计划任务里还能配一个定时任务自动跑备份,成本极低。

6.3 版本升级提醒

MySQL 9.0作为Innovation版本,生命周期不会太长。官方后续会继续推出9.1、9.2等版本。如果你的学习或开发节奏不紧,建议安装完成后每隔几个月关注一下官方发布的更新,及时跟进最新的小版本。

但注意,升级不等于简单覆盖安装。跨小版本升级之前,先备份数据,再停掉服务,然后下载新版MSI执行升级。升级过程中Installer会自己检测数据目录格式并做迁移。如果是从8.4跨到9.x,升级路径会更讲究一些,建议提前看官方文档的升级说明,而不是直接装新版覆盖。

我自己在Windows上的使用习惯是:生产相关的项目继续用8.4,个人实验和学习环境用9.0,两边不互相污染,也不需要频繁切换配置。MySQL 9.0在Windows上已经足够稳定,只要环境检查到位,安装过程其实比很多人想象的简单,关键是在动手之前就想清楚自己的需求。希望这篇东西能让你在一台新Windows机器上顺利把MySQL 9.0跑起来,少走几趟弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 3:45:31

openrig:用YAML统一管理Claude Code与Codex的AI编程环境配置

1. openrig 到底想解决什么问题第一次看到 openrig 这个名字,很多人会以为是某个硬件项目,毕竟 “rig” 在英文里常指设备支架、矿机架或者实验台。但结合 Claude Code、Codex、YAML、Node.js 这组关键词来看,它显然是一个围绕 AI 编程助手工…

作者头像 李华
网站建设 2026/10/3 3:44:55

SQL表设计、管理、性能优化与特殊场景实战全解

SQL表相关的活儿,说难不难,说简单也真不简单。我这些年看了太多项目,表结构设计得乱七八糟,慢查询遍地都是,一个简单的去重需求都能写出四五种错误版本。这篇文章我不打算写成一本SQL大全,那没意思&#xf…

作者头像 李华
网站建设 2026/10/3 3:44:38

SAVOY V2.6.2:面向家电出海的WooCommerce合规型主题

简介:SAVOY V2.6.2 是一款专为科技风格家居电器外贸独立站打造的WordPress商城主题,面向跨境电商运营者、WordPress建站开发者及外贸企业技术负责人,解决高端产品展示、多语言适配与高效电商转化等核心需求。资源为ZIP压缩包,大小…

作者头像 李华
网站建设 2026/10/3 3:44:38

OpenShell实战:用自然语言让大模型直接操作本地文件与命令

如果你每天要在文件管理器、浏览器、编辑器之间来回切换,只为完成“把那个文件整理一下”这种听起来很小的事,那你大概率会在某一天突然意识到:为什么不能直接对电脑说一句话,让它把活干完?我今年把 OpenShell 装到主力…

作者头像 李华
网站建设 2026/10/3 3:44:37

FPGA数字信号处理之NCO查表法:原理、实现与杂散优化

1. 项目概述:为什么NCO是FPGA数字信号处理的“标配”模块想做FPGA数字信号处理,绕不开的一个基础模块就是NCO(数字控制振荡器)。不管是软件无线电里的混频、数字下变频,还是信号发生器里的任意波形输出,甚至…

作者头像 李华
网站建设 2026/10/3 3:44:16

QT+VTK实现DICOM三维重建:体渲染与交互式剖切实战

简介:本资源是一套面向医学影像处理与可视化开发者的实战型C项目源码,聚焦CT图像三维重建技术实现,适用于高校医工交叉方向学生、医疗软件开发者及VTK/QT进阶学习者。项目基于Qt构建跨平台图形界面,集成VTK完成CT序列图像预处理、…

作者头像 李华