news 2026/9/7 20:53:19

MySQL 9.0 Windows安装完整实战:MSI与ZIP双方案详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL 9.0 Windows安装完整实战:MSI与ZIP双方案详解

新换了一台工作机,数据库环境全部重装一遍,顺手就把 MySQL 9.0 在 Windows 上的安装流程完整走了一遍。这篇文章不是临时翻文档写出来的,而是我实际踩完坑之后的完整记录。MySQL 9.0 在下载渠道、初始化方式、默认认证配置上和之前写过的 8.0 安装有一些细节差异,先说明清楚,后面安装就不会卡壳。这篇内容主要给两类读者:一类是刚接触 MySQL、想在 Windows 上快速把环境搭起来的学习者;另一类是已经用了多年 8.x 或 5.7、准备看看 9.0 新特性的老手。安装方式我会讲两条路线,MySQL Installer 图形化安装和免安装 ZIP 包手动配置,两条都会带完整步骤和解释为什么这么做。

1. 安装前的准备与版本选择

1.1 MySQL 9.0 的版本定位:为什么它和 8.4 不一样

MySQL 从 8.1 开始调整了版本发布策略,区分成了LTS 长期支持版Innovation 创新版。8.4 是 LTS,适合生产环境稳扎稳打;9.0 是 Innovation,发布时间更激进,带了一些新功能,但也意味着它的迭代节奏更快,后续还会有 9.1、9.2 陆续出来。

9.0 最吸引我的是两个点:一是内置了VECTOR 数据类型,在做向量检索实验的时候可以直接存 embedding,不用再额外架构外部数据库;二是开始支持用JavaScript 编写存储程序,这个需要 GraalVM 运行时配合,普通 Windows 安装场景基本用不到,但在 AI 应用开发里算是给数据库能力打开了口子。除此之外,9.0 还删掉了一批被废弃的老配置项,安全默认值也比以前更严格。

所以如果你是在生产环境用 MySQL,我的建议还是老老实实装 8.4 LTS,不要图新。如果你和我一样,想在本地拿一个新版本跑实验、写测试代码、学习最新特性,那 9.0 很合适。后面所有步骤我都基于 Windows 10/11 64 位系统实测。

1.2 用户场景与两种安装方式的取舍

Windows 上装 MySQL 9.0,主流方式就两条:MySQL Installer 图形化安装ZIP 免安装包手动配置

MySQL Installer 是官方提供的图形界面安装工具,交互式点选,自动处理依赖、服务注册、root 密码设置这些事,特别适合新手,或者想快速把环境跑起来的人。缺点也很明显:安装器本身比较重,步骤多,而且它会顺带加载一系列官方组件(比如 Workbench、Router、ODBC 驱动),如果你只想要一个数据库服务,会觉得有点啰嗦。

ZIP 包手动配置则是把所有步骤摊开在你面前:解压到指定目录、自己写 my.ini、命令行初始化数据目录、手动注册 Windows 服务。这种方式更透明,出问题的时候你能清楚知道是哪一步挂了,同时占用的系统文件也更少。如果你之后想做一个绿色版 MySQL 随身携带,也基本是走这条路线。

我把两者对比放在一张表里,方便你根据自己情况做决定:

对比维度MySQL Installer 图形化ZIP 包手动配置
上手难度低,全程点按钮中,需要命令行操作
安装速度3~5 分钟(包含依赖检查和组件下载)5 分钟以内
可控性依赖安装器逻辑,隐藏了部分细节完全可控,每一步都看得见
适合场景新手、快速开发环境定制化部署、绿色版、学习原理
排障友好度一般,报错直接弹窗,信息有限高,可以精确到日志和参数

我个人在开发机上的选择是 ZIP 方式,因为可控,而且这次要写教程,走一遍能验证每个命令的细节。如果你只是想快速用起来,可以直接跳到第 2 章。

2. 获取安装包与 MSI 图形化安装

2.1 从官网正确获取 MySQL 9.0 安装包

无论走哪条安装路线,安装包都得从官方渠道拿。MySQL 的下载页是MySQL Community Downloads,进去以后选MySQL Community Server,在版本下拉框里选择 9.0 系列,然后根据系统选Windows (x86, 64-bit)

推荐优先走官方下载页,因为国内很多第三方下载站会给 MySQL 包塞私货或者捆绑浏览器插件,不划算。官网下载速度如果慢,可以用页面里提供的镜像站点,选一个离你近的镜像即可。

注意,官网下载区同一个版本会提供三种格式:MSI Installer、ZIP Archive、以及带调试符号的包。普通用户只需要前两种。MSI 适合走图形化安装,ZIP Archive 适合手动解压部署。我的建议是:要省事就下载 MSI,要干净就下载 ZIP,不要两个都下,没意义。

下载过程中有一点容易忽略:MSI 分两种安装包,一个是mysql-installer-community-9.0.0.msi(完整安装器),一个是mysql-server-9.0.0-winx64.msi(仅服务器内核)。前者会引导你装组件和配置服务,后者只是把数据库核心文件装进去,后续还得自己初始化。我这次用的前者,对新手最友好。

2.2 MSI 图形化安装操作详解

双击运行 MSI 后,按照下面的顺序操作,基本不会出幺蛾子:

  1. 选择安装类型:安装器会列出 Developer Default、Server only、Custom 等选项。我只推荐选Server only。Developer Default 看着方便,实际上会拉进来一堆你用不到的东西,比如 MySQL Router、ODBC 驱动、Python 连接器,装完以后占用大,卸载也麻烦。
  2. 检查系统依赖:安装器会检查当前环境是否满足要求,比如缺 Microsoft Visual C++ Redistributable 会提示你先装。这一步直接点 Execute 让它自动装即可。
  3. Type and Networking:这里保持默认就行,端口默认3306。如果你的机器上已经跑着别的 MySQL 或其他服务占用了 3306,记得在这里换一个端口,后面所有客户端连接都要跟着改。
  4. 认证方式:MySQL 9.0 默认使用caching_sha2_password,这是官方推荐的认证插件,安全性更好。如果你只在本地开发测试,不需要额外调整,直接下一步。但如果你的同事或旧客户端用的是老驱动,这一步可以考虑选择 "Use Legacy Authentication"(对应 mysql_native_password),否则后面可能会报驱动不支持 caching_sha2_password 的错误。老驱动的情况我在第 5 章会展开讲。
  5. 设置 root 密码:这是安装过程中最关键的步骤。输入一个你记得住的强密码,比如至少 8 位、包含字母数字和特殊符号。同时可以顺手添加一个普通业务账号,用于平时连接,避免所有应用都拿 root 操作。
  6. Windows Service 配置:勾选 "Configure MySQL Server as a Windows Service",服务名保持默认的MySQL90,启动类型选Automatic,这样 Windows 开机后数据库会自动后台运行,不用每次手动敲 net start。
  7. Apply Configuration:安装器开始写入配置、初始化数据目录、启动服务。这一步如果报错,别急着重装,先看它卡在哪一步。大部分情况是端口被占或权限不足,去系统事件查看器里能看到更多细节。
  8. 完成:全部打勾通过以后,MSI 方式就算搞定了。你可以直接在命令行执行mysql -u root -p测试连接。

MSI 方式把最复杂的初始化、服务注册都封装掉了,装完即用,对新手确实友好。但如果你想完全掌握 MySQL 在 Windows 上的运行机制,我还是建议接着往下看 ZIP 方式,理解底层逻辑。

3. ZIP 免安装包:手动初始化与注册服务

3.1 解压与目录规划

ZIP 方式的起点是官网下载的mysql-9.0.0-winx64.zip,解压以后你会得到一个和包名相同的目录,里面默认只有 bin、include、lib、share 等子目录。注意,这个状态下还没有data目录,也没有my.ini不能直接运行 mysqld 启动数据库,必须先完成初始化和配置。

解压路径有几个讲究:

  • 路径不要含中文,不要含空格,否则后面注册服务和读取配置时容易出现诡异的问题。
  • 建议放在一个短路径下,比如C:\mysql\mysql-9.0.0-winx64。我见过有人放C:\Program Files\MySQL\Server\9.0,虽然也能跑,但命令行操作时路径太长,敲起来很痛苦。
  • 解压完成后,确认 bin 目录下能看到mysqld.exemysql.exe,这是核心程序。

我习惯把压缩包里的目录重命名成C:\mysql\mysql-9.0.0-winx64,这样路径短,后续所有命令都清晰。如果你自己规划了别的路径,下面的命令里所有路径都要同步替换,别漏。

3.2 编写 my.ini 配置

ZIP 包默认没有配置文件,需要自己建一个my.ini,放在解压后的根目录下。MySQL 在 Windows 上启动时会按顺序查找配置文件,常见查找位置包括系统目录、当前工作目录、basedir 目录,但为了精确可控,我建议在注册服务时用--defaults-file参数显式指定配置文件路径,而不是赌它默认扫到哪个文件。

我的开发机上一个最精简的my.ini长这样:

[mysqld] basedir=C:/mysql/mysql-9.0.0-winx64 datadir=C:/mysql/mysql-9.0.0-winx64/data port=3306 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci max_connections=200 [client] default-character-set=utf8mb4

这里几个参数的作用值得解释清楚:

  • basedir:MySQL 的安装根目录,程序文件所在位置。
  • datadir:数据文件目录,表数据、日志、错误日志都放这里。这个目录可以不在 basedir 下面,但路径必须存在,并且是绝对路径。
  • port:监听端口,默认 3306。如果被占用就改别的,比如 3307。
  • character-set-servercollation-server:数据库默认字符集和排序规则。统一设成 utf8mb4 是为了避免中文乱码,这个在第 5 章会展开说。
  • max_connections:最大连接数。开发机设 200 足够,如果只是个人测试,也可以不写用默认值。

写配置文件时有一个非常容易踩的坑:Windows 记事本默认编码是 UTF-8,但如果里面有中文注释,MySQL 在解析 my.ini 时可能因为编码问题读到异常内容,导致配置静默失效甚至服务起不来。我的习惯是配置文件里全程用英文,不用任何中文注释,彻底避开这个坑。

3.3 初始化数据目录与注册 Windows 服务

配置文件写好后,打开一个管理员权限的 CMD(开始菜单里搜 CMD,右键以管理员身份运行),然后依次执行下面的命令。解释一下每个命令的目的:

第一步,进入 bin 目录:

cd /d C:\mysql\mysql-9.0.0-winx64\bin

第二步,初始化数据目录:

mysqld --defaults-file=C:/mysql/mysql-9.0.0-winx64/my.ini --initialize-insecure --console

--initialize-insecure的意思是以安全模式初始化数据目录,生成的 root 用户密码为空,方便首次进入后再改密码。加上--console是确保初始化信息直接输出到当前命令行窗口,而不是写入日志文件,这样你能直接看到有没有报错。如果初始化成功,bin 同级的目录下会出现一个data文件夹,里面有一个auto.cnf和以机器名命名的.err日志文件。

如果不用--initialize-insecure而用--initialize,MySQL 会生成一个随机临时密码,并且输出到控制台。这么做的安全性更高,但你必须马上记下那串临时密码。第一次没经验的时候我没注意,窗口一关就找不到了,最后只能删除 data 目录重新初始化,白折腾十分钟。

第三步,注册 Windows 服务:

mysqld --install MySQL9 --defaults-file=C:/mysql/mysql-9.0.0-winx64/my.ini

--install表示把 MySQL 注册成系统服务,服务名叫MySQL9。注册成功会提示Service successfully installed。这里指定--defaults-file能让服务启动时精确读取你写的配置,避免它去别的路径扫到一堆乱七八糟的配置文件。

第四步,启动服务:

net start MySQL9

如果启动成功,命令行会显示MySQL9 服务正在启动,然后服务已经启动成功。此时可以顺手验证一下:

mysql -u root -p

因为刚才初始化用的是--initialize-insecure,root 密码为空,所以这一步直接回车就能进到 MySQL 命令行,看到mysql>提示符。进去以后马上改密码,这一步放到第 4 章讲。

如果net start报错,别慌,绝大多数是配置或权限问题,对应的排查方法在第 5 章。

3.4 服务停止、删除与日常工作命令

手动安装之后,日常的启停命令也顺便列一下,以后会频繁用到:

net stop MySQL9 net start MySQL9

如果要彻底卸载服务:

mysqld --remove MySQL9

删除服务前一定先确保服务处于停止状态,否则会提示服务正在运行,无法移除。还有一个细节:mysqld --install注册的服务在 Windows 服务管理器里显示的是"本地系统账户"运行,如果你想指定一个低权限的 Windows 用户来跑 MySQL,要在安装服务时加--local-service参数,生产环境建议这么做,开发机直接用默认本地系统就行。

4. 环境变量、root 密码与日常连接

4.1 配置环境变量,告别每次敲全路径

ZIP 方式装完以后,你每次想执行mysql命令,都得先cdC:\mysql\mysql-9.0.0-winx64\bin,或者敲全路径C:\mysql\mysql-9.0.0-winx64\bin\mysql.exe,这太难受了。正确做法是把 bin 目录加入系统 PATH 环境变量。

操作路径是:右键"此电脑" → 属性 → 高级系统设置 → 环境变量 → 找到系统变量里的Path→ 编辑 → 新建 → 填入C:\mysql\mysql-9.0.0-winx64\bin。确认保存后,重开一个 CMD 窗口,执行:

mysql --version

如果输出了类似mysql Ver 9.0.0 for Win64 on x86_64的信息,说明环境变量生效了。以后在任意目录下都能直接输入mysqlmysqldump等命令,不用再拼路径。

这里有一个容易忽略的点:环境变量的修改只对新的命令行窗口生效。如果你改了 PATH 之后还在旧窗口里测试,大概率提示"不是内部或外部命令",这时不是配置错了,而是窗口没重开。

4.2 设置和重置 root 密码的两种方式

ZIP 方式初始化完,root 密码为空,必须马上设置,否则数据库裸奔在网络上是很危险的。进入 MySQL 命令行后执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';

执行完后,用FLUSH PRIVILEGES;刷新权限缓存,然后EXIT退出,再用mysql -u root -p重新登录验证密码是否生效。这一步验证别偷懒,我经常看到有人设置完就以为完事了,结果重启后连接不上,才发现密码写错了。

如果密码设置完之后忘了,也别慌,Windows 下可以通过跳过权限表的方式重置:

  1. 停止 MySQL 服务:net stop MySQL9

  2. 在命令行窗口前台启动跳过权限检查的模式:

    mysqld --defaults-file=C:/mysql/mysql-9.0.0-winx64/my.ini --skip-grant-tables --shared-memory

    --shared-memory是 Windows 专属参数,让 MySQL 通过共享内存方式监听,避免网络端口冲突。注意这个窗口会一直占着,不要关,另开一个新的 CMD。

  3. 新窗口执行mysql -u root,进入后执行FLUSH PRIVILEGES;,然后ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

  4. 回到第一个窗口,按 Ctrl+C 停止这个临时 MySQL 进程,再用net start MySQL9正常启动服务。

这个重置思路在 8.x 上也一样适用,9.0 没有本质变化。注意:--skip-grant-tables模式下任何本地用户都能无密码连上数据库,操作完一定要立刻停掉这个进程,不能在开放网络环境下开着。

4.3 选择顺手的连接工具

MySQL 装好以后,日常操作不一定非要在黑窗口里。常用的连接工具有这些:

  • 命令行 mysql:最基础、最可靠,适合快速查询和管理。
  • DBeaver:免费的通用数据库客户端,支持连接多种数据库,对新手很友好,UI 直观。
  • MySQL Workbench:官方出品的图形化管理工具,MSI 安装时如果选了 Developer Default 会一起装,功能全,但界面稍微有点笨重。
  • Navicat:商业软件,界面好看,功能强大,适合不差钱或公司用正版的情况。

我的建议是:日常开发连 MySQL,用 DBeaver 或者自己习惯的 IDE 插件(比如 VS Code 的 Database Client)就够了,命令行作为兜底工具必须会。

另外,如果你的开发语言是 Java 或 Python,连接 MySQL 9.0 时驱动版本都要跟上:

  • Java 的 JDBC 驱动至少要用 mysql-connector-j 8.0.11 以上版本,否则默认认证插件caching_sha2_password会握手失败。
  • Python 的 PyMySQL 或 mysql-connector-python 尽量装新版,老版本可能会报Authentication plugin 'caching_sha2_password' is not supported

这两种情况本质都是认证插件兼容性问题,不是数据库装坏了,换掉驱动就行,不要硬改数据库认证配置。

5. 常见安装问题与排查技巧

5.1 服务启动失败:1067 错误与 .err 日志

Windows 下 MySQL 启动失败最常见的就是服务管理器的错误 1067(进程意外终止)。这个错误信息非常笼统,只告诉你"进程挂了",没告诉你为什么挂。这时候真正的排障入口是错误日志。

错误日志的位置就在datadir目录下,文件名是机器名.err。找到它,打开最后几十行,绝大多数情况下真相都在那里。

我这次安装过程中实际上也踩了启动失败的坑,日志里显示:

[ERROR] [MY-010187] Can't create directory 'C:\mysql\mysql-9.0.0-winx64\data\'

原因是 data 目录的权限不足。MySQL 服务是以本地系统账户运行的,理论上对C:\mysql应该有完全控制权,但如果你解压 ZIP 时用了某个受限账户,可能会导致目录 ACL 异常。解决办法是右键C:\mysql\mysql-9.0.0-winx64目录 → 属性 → 安全 → 编辑 → 给 Users 或 SYSTEM 添加完全控制权限。生产环境更严谨的做法是只授权给服务运行账户,开发机直接 Everyon 完全控制虽然省事,但不推荐。

其他常见启动失败原因:

  • my.inibasedirdatadir路径写错,尤其是把反斜杠\写少了,或者路径末尾多了个空格,MySQL 解析时会直接报无法找到文件。
  • datadir指向了一个已经有内容的非空目录,初始化时不会自动覆盖,会报directory isn't empty
  • 端口被占,can't bind to address,用netstat -ano | findstr 3306查谁占用了端口。

排查顺序我总结成一个清单:

  1. 打开data\机器名.err日志,先看最后 20 行有没有明确[ERROR]
  2. 验证 my.ini 路径是否正确,路径里的斜杠建议统一用/,Windows 的 MySQL 也是认这个的。
  3. 确认端口没有被占用。
  4. 检查目录权限。

5.2 连接被拒绝与 root 密码错误

连接时最常见的两个报错:

ERROR 1045 (28000): Access denied for user 'root'@'localhost'

这个报错是密码不对或用户不存在。如果是密码不对,重新走一遍 4.2 的重置流程。如果确认密码没错但还是连不上,检查一下 root 用户的 host 字段,localhost127.0.0.1在 MySQL 的账号体系里是两个不同的登录入口。

ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306'

这个报错是根本连不到服务,可能原因有:

  1. MySQL 服务没启动,先net start MySQL9

  2. 端口不对,你用了 3307 启动却拿着 3306 连接,修改-P参数即可。

  3. 防火墙拦截,本地连接一般不会,远程连接大概率是这个原因。解决方法是添加一条入站规则放行 3306 端口,或者用命令行:

    netsh advfirewall firewall add rule name="MySQL3306" dir=in action=allow protocol=TCP localport=3306

    这条命令要以管理员身份运行。注意放开端口后 MySQL 也直接暴露在网络上,建议 root 只允许 localhost 登录,业务账号按需授权。

ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded

这个报错基本只出现在旧版客户端工具或旧驱动上。MySQL 9.0 默认认证插件是caching_sha2_password,如果你的客户端版本太老、只认识mysql_native_password,就会报这个错。正确做法是升级客户端驱动或工具;如果实在不行,可以单独创建一个使用mysql_native_password认证的账号来适配老客户端,但不要为了兼容把整个数据库的默认认证方式都改回老协议。

5.3 命令行中文乱码与字符集问题

Windows 下装 MySQL,另一个高发问题是中文乱码。你往表里插入中文,查出来变成??或者浣犲ソ这种看不懂的字符。原因一般有三层:

  1. 数据库层面的字符集没设置对。表或库的默认字符集不是 utf8mb4,导致存入的中文没法正常编码。排查方式是在 MySQL 里执行:

    SHOW VARIABLES LIKE 'character_set_server'; SHOW VARIABLES LIKE 'character_set_database';

    如果返回的不是utf8mb4,在 my.ini 的[mysqld]段加上character-set-server=utf8mb4,并确保建库时指定字符集:

    CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  2. 客户端连接时字符集不对。命令行连接时,MySQL 客户端的默认字符集可能被系统代码页影响,连接后执行SET NAMES utf8mb4;能临时解决。一劳永逸的办法是在 my.ini 的[client]段落加default-character-set=utf8mb4,或者在命令行启动时加--default-character-set=utf8mb4

  3. Windows 命令行代码页问题。CMD 默认代码页可能是 936(GBK)或者 437,这会导致显示中文时乱码。先在命令行执行chcp 65001,再启动 mysql,显示就正常了。

还有一个容易忽略的地方:如果你用 Java 程序连 MySQL,连接字符串里一定要加characterEncoding=utf8serverTimezone=Asia/Shanghai,否则即使数据库端字符集没问题,应用层写入时也会编码错乱。Python 连接器则多用charset='utf8mb4'参数。

5.4 快速定位配置文件的技巧

最后分享一个我压箱底的排查技巧:装完 MySQL 后,如果发现改动的配置参数没生效,八成是配置文件读的不是你以为的那个文件。在命令行里执行:

mysqld --verbose --help | findstr my.ini

MySQL 会把当前实例实际读取的配置文件路径打印出来。我见过有人在 C 盘根目录遗留了一个旧版本的 my.ini,导致新装的 MySQL 9.0 始终读不到解压目录下的配置,折腾了大半天。用这个命令一查,立刻定位到问题。这个技巧同样适用于 8.x 和更早版本,Windows 和 Linux 都适用。

6. 安装完成后的几个必要检查

6.1 确认服务、端口与防火墙状态

MySQL 装完能连上,并不代表万事大吉。我建议花两分钟做一次状态确认:

net start | findstr MySQL9 netstat -ano | findstr 3306

net start会列出当前运行的系统服务,确认 MySQL9 在启动状态。netstat能看到 3306 端口是否在监听。如果 Windows 服务管理器显示服务自动启动,但开机后还是连不上,大概率是防火墙拦截导致服务启动时网络初始化失败。

如果希望局域网内其他机器也能访问这台机器的 MySQL,在防火墙放行端口后,还要检查 MySQL 用户的 host 是否允许远程登录。默认 root 只允许localhost,远程连过来会直接Access denied。正确做法是创建专用账号:

CREATE USER 'dev'@'192.168.%' IDENTIFIED BY '强密码'; GRANT ALL PRIVILEGES ON *.* TO 'dev'@'192.168.%'; FLUSH PRIVILEGES;

把 host 设置成%也能用,但等于所有机器都有这个账号的登录权限,风险大,能精确到网段就精确到网段。

6.2 统一字符集、时区与默认存储引擎

连接上 MySQL 后,执行这条 SQL 快速体检:

SELECT VERSION(); SHOW VARIABLES LIKE 'character_set_server'; SHOW VARIABLES LIKE 'time_zone'; SHOW VARIABLES LIKE 'default_storage_engine';
  • character_set_server应该是utf8mb4,如果不是,检查 my.ini。
  • time_zone默认是SYSTEM,一般跟随 Windows 系统时区,问题不大。但如果是 Java 应用,连接串里务必加serverTimezone=Asia/Shanghai,否则 JDBC 驱动可能因为拿不到时区直接报错。
  • default_storage_engine在 9.0 里默认是InnoDB,这个保持不变,不用改。

另外,MySQL 9.0 对底层数据字典的约束比 8.0 更严格,一些老的 MyISAM 做法的表尽量在建表时显式指定ENGINE=InnoDB,后续运维会省不少事。

6.3 别忘了备份与版本策略提醒

最后提醒一句:MySQL 9.0 是 Innovation 版本,不是 LTS,官方对它的维护支持周期会比较短。你可以把它当玩具、当测试环境、当新特性体验场,但别在重要生产业务里长期依赖它。等 8.4 LTS 的下一个大版本 LTS 出来以后,再考虑迁移。我个人的建议是:开发机可以大胆用 9.0,公司的关键业务数据库继续跑 8.4,两边都不耽误。

如果你的机器上之前装有旧版 MySQL,升级前一定先mysqldump备份数据,最好在另一台机器上模拟升级一遍。Windows 上升级 MySQL 的过程其实不复杂,但要是没备份就直接替换 data 目录或者跑升级命令,数据损坏的风险是实打实的。

结语与一点个人体会

我实际在 Windows 上装完 MySQL 9.0 之后,最直接的感受是初始化方式更规范了,数据目录管理也更严格。如果之前已经在用 8.x,平滑迁移成本不大;如果是全新安装,我更建议先走一遍 ZIP 手动方式,因为能看到每一步到底做了什么,后面遇到问题排查起来心里有数。等你把 ZIP 方式彻底跑通,再用 MSI 方式装其他环境,速度会快很多,因为你已经知道每一步背后在干什么了。

最后再分享一个小技巧:给 MySQL 单独建一个专用目录(比如C:\mysql),把安装包、解压目录、配置文件、备份脚本都放在一起,命名统一。别小看这类整理工作,我见过太多人几个月后连自己当初把数据库装在哪里都找不到,更别提做版本升级和迁移了。整洁的目录结构,是所有后续运维工作的基础。

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

城市生命线密钥安全实战:智能燃气表密钥分发与关键基础设施密码防护

换一块燃气表,接线、通气、激活,现场十分钟;但真正把一块表"接入"企业的不是管道,是密钥。旧表号不吊销,新表随便发号就入网,那么远程调价、远程关阀、用气量上报这些"城市生命线"末梢动作,就都建立在一层纸糊的信任上。 智能燃气表早已不是一块"抄表…

作者头像 李华
网站建设 2026/9/7 20:50:57

工装模具管理系统典型技术架构:分层设计与模块划分

导语 前两批把功能层拆完了,从本篇起进入架构层。工装模具管理系统的架构并不神秘,但它有一个普通业务系统没有的约束:它必须同时服务两个世界——办公室里用浏览器看报表的模具主管,和车间里拿着扫码枪、刷工卡、隔着机油摸屏幕的…

作者头像 李华
网站建设 2026/9/7 20:50:11

腾讯混元770B参数跃迁:架构重塑与工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/7 20:48:12

前端进阶Node.js完整路线:从事件循环到工程化实战

前端开发这个圈子,有个很有意思的现象:很多人写了几年JavaScript,DOM操作玩得飞起,各种框架信手拈来,但一提到Node.js,心里就开始打鼓。总觉得那是"后端工程师"的活儿,跟自己的主业没…

作者头像 李华
网站建设 2026/9/7 20:41:46

微服务性能调优实战:线程池、JVM与缓存全链路优化指南

“特殊字符”这个项目代号,在很长一段时间里是我们内部一个营销权益系统的代称。立项时为了保密,团队用了这个看起来像乱码的名字,后来叫顺口了,就一直沿用到生产环境。当时选微服务架构,是因为权益体系牵扯会员、商品…

作者头像 李华
网站建设 2026/9/7 20:41:14

VE锁仓机制解析:锁1个月与锁4年投票权为何相差48倍

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华