
最近几天好几个读者都在问 MySQL 9.1.0 安装的问题有些还是第一次接触数据库的新人。正好我上周在一台 Windows 10 笔记本上把 9.1.0 从零到跑通装了一遍而且特意用的是解压版而不是一键安装包整个过程踩了几个老生常谈的坑也整理了值得注意的版本细节。这篇文章就把完整的安装过程、配置文件和排错方法全部写出来目标只有一个让你照着操作半小时内装好 MySQL 9.1.0 并正常登录。如果你之前装过 MySQL 5.7 或 8.0这篇文章里的很多思路是通用的但 9.1 这个版本有一些差异尤其体现在认证插件和默认配置上。如果你是完全的新手那这篇文章就更是为你准备的从下载安装包到跑通SELECT 1每一步我都会写得非常啰嗦宁可我多说十句也不让你卡在一个小坑里半小时。1. 先弄清楚 MySQL 9.1.0 是什么版本1.1 9.1.0 属于 Innovation 版本不是 LTS很多人在下载页面看到一堆版本号就懵了8.0、8.4、9.0、9.1到底该下哪个这里先说结论MySQL 9.1.0 是一个Innovation Release创新版本不是 LTS长期支持版。MySQL 官方从 2024 年开始调整了版本发布节奏把产品线分成了两类LTS 版本和 Innovation 版本。当前 LTS 版本是 8.49.x 系列9.0、9.1、后续的 9.2 等都属于创新版。创新版的特点是每三个月左右发布一个新版本功能迭代快新特性多但每个版本的维护周期也短不会像 LTS 那样提供数年支持。所以如果你是给公司生产环境选型我一般不建议直接上 9.1老老实实用 8.4 LTS 更稳妥。但如果你是为了学习、本地开发、个人项目或者学校培训课程要求用新版那 9.1.0 完全没问题。我自己本地装了 9.1.0跑 JavaWeb 项目、Spring Boot 应用都很正常。1.2 选 9.1 还是 8.4 LTS到底怎么定我给一个比较实用的选型建议你照着判断就行场景推荐版本原因公司生产环境、线上业务8.4 LTS长期维护、稳定优先、社区经验多本地学习、练手、跑课程设计9.1.0新特性体验、安装流程和 8.x 通用需要和旧系统对接如老版本 ODBC/JDBC8.0 或 8.4兼容性资料更丰富已经装了 5.7想升级先小版本升到 8.0/8.4直接大跨度升级容易踩坑还有一点要注意9.1.0 只有 64 位版本。如果你的 Windows 还是 32 位系统那就别折腾了装不了直接换系统或者用 Docker 跑个容器。1.3 谁适合照这篇教程操作这篇保姆级教程主要面向以下三类人第一次装 MySQL 的纯新手希望每一步都明明白白以前装过但被配置文件、服务启动问题搞到崩溃的“回头客”需要在本地同时保留多个 MySQL 版本想搞清楚原理再动手的人。如果你是老手可以重点看第 4 章的 my.ini 配置和参数说明还有第 5 章的排错记录很多坑是我实际踩过的不是网上抄来的。2. 安装前需要明确的东西2.1 环境要求先检查一遍再说MySQL 9.1.0 对 Windows 系统的最低要求并不高但有几个硬性条件必须满足操作系统Windows 10 或 Windows 1164 位版本。Windows Server 2016 以上也可以。内存建议至少 4GBMySQL 默认的 InnoDB 缓冲池在内存占用上不算太夸张但 2GB 的机器跑起来会明显吃力。磁盘解压后的 MySQL 目录大约 700MB 到 1GB数据目录后续会增长建议留出至少 2GB 空间。端口默认 3306 端口必须没有被占用这一点经常被忽略我会在第 5 章专门讲怎么排查。另外安装过程需要管理员权限。很多操作比如注册 Windows 服务、启动服务、配置环境变量都需要在管理员模式下进行。我建议你直接右键“以管理员身份运行”命令提示符后面所有命令行操作都在这个窗口里完成省得一会儿权限不够一会儿又弹窗。2.2 官方下载渠道和国内镜像源下载地址其实很简单MySQL 官方下载页面是https://dev.mysql.com/downloads/mysql/。打开后选择 Windows 平台你会看到几个选项MySQL Installer for WindowsMSI 安装包Windows (x86, 64-bit), ZIP Archive解压版压缩包这篇文章主要讲 ZIP Archive 解压版的安装流程。我建议你也下载这个版本原因后面会详细说。下载文件名大致是mysql-9.1.0-winx64.zip体积在 200MB 左右。如果你在官网下载速度太慢可以换国内镜像源。清华 TUNA 镜像和阿里云镜像都有 MySQL 的镜像目录URL 结构一般是https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-9.0/或者对应版本目录。注意镜像站的文件列表可能落后于官网你可以先到官网看版本号再去镜像站找同名文件。还有一个重要建议不要从来路不明的第三方网站下载所谓“绿色版”“破解版”MySQL。这个真的不是开玩笑数据库是存数据的东西你用不知名的安装包轻则装不上重则被植入恶意代码到时候哭都来不及。2.3 拿到安装包后先校验一下下载完后别急着解压先确认文件没有损坏。MySQL 官网会提供 SHA256 校验值你在下载页面能看到对应的 checksum 信息。Windows PowerShell 里可以这样算哈希值Get-FileHash .\mysql-9.1.0-winx64.zip -Algorithm SHA256把输出的哈希值和官网给出的值比对如果完全一致就可以放心使用。如果对不上大概率是下载中途断了或者被拦截了建议重新下载。这一步虽然多花了 30 秒但能避免后续解压报错、服务启动异常这些莫名其妙的问题。3. 两种安装方式我建议你选 ZIP 解压版3.1 MSI Installer 安装省心但不够透明MySQL Installer 是官方的图形化安装器双击运行后可以一路下一步中间还会让你设置 root 密码、选择安装组件、决定是否安装 MySQL Workbench 等等。MSI 安装方式的优点很明显适合不想看配置文件的用户安装完基本就能用服务也会自动注册好。但它有两个我不太喜欢的地方。第一MSI 安装通常会把数据文件、配置文件分散到 C 盘不同位置后续想迁移或者做多版本共存很麻烦。第二MSI 安装过程中很多默认选项是“黑盒”出了问题你不太容易定位是哪一步导致的。如果你是纯新手实在害怕命令行MSI 也能装成功。但只要你愿意花十分钟看完这篇教程ZIP 解压版会给你更大的掌控感。3.2 ZIP Archive 解压版灵活可控推荐ZIP 解压版的安装方式本质就是把压缩包解压到某个目录然后手动完成四件事——写配置文件、初始化数据目录、注册 Windows 服务、启动服务。听起来步骤多但每一步都清清楚楚出了问题也知道去哪里看。更重要的是ZIP 解压版支持多版本共存你想同时跑 8.4 和 9.1只要换端口、换服务名、换数据目录就行。这对经常需要测试不同 MySQL 版本的人来说非常方便。3.3 两种方式对比对比项MSI InstallerZIP Archive 解压版安装难度低一路下一步中需手动配置配置文件位置分散在 C 盘 ProgramData 等my.ini 就在解压目录里多版本共存不友好非常友好可迁移性差强拷贝目录即可问题排查黑盒逻辑多日志集中适合定位对新手友好度高需要认真看教程我个人强烈推荐新手也直接用 ZIP 解压版因为你迟早要接触 my.ini 配置和初始化命令早学早受益。4. ZIP 解压版保姆级安装步骤4.1 解压与目录规划第一步把下载好的压缩包解压到你想要安装的目录。我这里以D:\mysql-9.1.0-winx64为例。这里有三条铁律每条都是我用血泪换来的路径不要带中文比如D:\软件\mysql这种以后会有很多奇怪的问题路径不要带空格比如D:\Program Files\mysql虽然能配但容易踩坑不要解压到 C 盘系统目录或者用户目录下权限问题会让你怀疑人生。如果你之前装了旧版本 MySQL建议先把旧的卸载干净或者换个目录避免两个版本相互干扰。解压完成后你可以先看看目录里是不是有bin、lib、share这些子目录确认解压完整。4.2 手把手写 my.ini 配置文件解压目录里默认没有 my.ini需要我们自己新建。在D:\mysql-9.1.0-winx64目录下新建一个文本文档改名为my.ini然后把下面的内容复制进去[mysqld] basedirD:/mysql-9.1.0-winx64 datadirD:/mysql-9.1.0-winx64/data port3306 character-set-serverutf8mb4 collation-serverutf8mb4_0900_ai_ci default-storage-engineINNODB # 可选参数按需开启 # max_connections200 # skip-name-resolve [client] default-character-setutf8mb4你可能注意到我把路径写成了正斜杠D:/mysql-9.1.0-winx64而不是常见的反斜杠D:\mysql-9.1.0-winx64。这是故意的因为反斜杠在 ini 文件里可能会被当成转义符处理写成正斜杠最安全。如果你非要写反斜杠记得写两个比如D:\\mysql-9.1.0-winx64。保存文件的时候注意编码。我强烈建议你用记事本另存为 UTF-8 无 BOM 格式或者干脆用 ANSI 编码。如果你用带 BOM 的 UTF-8 保存MySQL 服务在读取 my.ini 时可能解析出问题最典型的现象就是服务启动失败日志里也没有明确报错。这个坑我帮不少读者排查过。这个配置文件里的参数解释一下basedirMySQL 安装根目录后面注册服务时会用到datadir数据目录存放数据库文件的地方port服务端口默认 3306如果被占用可以改成 3307 等character-set-server服务端默认字符集utf8mb4是目前最推荐的能完整支持所有 Unicode 字符包括 emojicollation-server字符集排序规则MySQL 8.0 默认推荐utf8mb4_0900_ai_cidefault-storage-engine默认存储引擎现在基本都是 InnoDB。4.3 初始化数据目录配置文件写好后开始初始化数据目录。这一步的作用是生成系统数据库、权限表、错误日志等基础文件。先打开命令提示符右键“以管理员身份运行”然后进入到 bin 目录cd D:\mysql-9.1.0-winx64\bin执行初始化命令mysqld --initialize-insecure --console这里有两个初始化选项需要说明一下--initialize-insecure初始化后 root 用户密码为空适合首次登录后自己设置密码--initialize初始化后生成一个临时随机密码会在控制台打印出来需要马上复制保存登录后强制改密码。我推荐新手用--initialize-insecure因为空密码不会搞丢登录进去再改也很方便。--console的作用是把初始化日志直接打印在命令行窗口里不用打开文件去看。初始化过程大概十几秒到一分钟不等如果没有任何报错控制台最后会安静下来这时候回到目录你会发现多了一个data文件夹里面有一堆文件和子目录说明初始化成功了。如果初始化报错大概率是 my.ini 路径写错、端口被占用、或者目录权限问题。你可以直接查看data目录下的.err文件内容报错信息都在里面。4.4 注册 Windows 服务初始化完成后把 MySQL 注册为 Windows 服务这样后续可以通过系统服务管理器控制它的启动、停止、开机自启。还是在管理员命令行窗口执行mysqld --install MySQL91 --defaults-fileD:\mysql-9.1.0-winx64\my.ini这里的MySQL91是服务名称你可以随意取但建议和版本号对应方便以后识别。--defaults-file指定配置文件完整路径路径里有引号是因为后面没有空格也需要加上更保险。执行成功后控制台会提示Service successfully installed。如果你看到Install/Remove of the Service Denied说明当前命令行不是管理员权限重新以管理员身份打开窗口再执行。如果提示服务已经存在说明你以前装过需要先删除旧服务mysqld --remove MySQL91删除后重新执行安装命令。这段操作我建议你在命令行里看到什么结果、截图或认真读提示不要急着下一步。注册完服务后可以在 Windows 服务管理器里验证一下。按Win R输入services.msc回车向下滚动找MySQL91这个服务状态应该是“停止”启动类型为“自动”。4.5 启动 MySQL 服务启动服务有两种方式命令行的写法是net start MySQL91如果一切正常你会看到“MySQL91 服务正在启动”和“服务已经启动成功”的提示。这一步看似简单但很多人卡在这里。一个特别常见的笑话是有人进入D:\mysql-9.1.0-winx64\bin目录后执行net start mysql结果提示服务名无效。这里我要解释一下net start是 Windows 系统命令不是 MySQL 命令它不接受路径前缀而且服务名必须和你注册时完全一致。如果你注册的服务名是MySQL91就必须执行net start MySQL91不要想当然地改成mysql或MySQL。启动成功后验证端口是否在监听netstat -ano | findstr :3306能看到LISTENING状态的记录说明服务已经正常工作了。也可以打开服务管理器手动点“启动”按钮效果一样。4.6 登录并修改 root 密码服务启动后我们来登录 MySQL。还是在命令行窗口执行mysql -u root -p因为初始化时用了--initialize-insecure此时 root 密码为空提示输入密码时直接回车即可。进入 MySQL 命令行后你会看到类似mysql的提示符。现在修改 root 密码执行ALTER USER rootlocalhost IDENTIFIED BY 你的新密码; FLUSH PRIVILEGES;密码建议设置得复杂一点至少 8 位包含大小写字母、数字和符号。如果你设置的密码里有特殊字符要注意命令行转义不过 MySQL 命令行里通常直接输入没问题。修改成功后可以用exit退出再重新执行mysql -u root -p测试新密码能否登录。4.7 配置环境变量告别路径切换最后一步把 MySQL 的 bin 目录加入系统环境变量这样以后在任何目录下都能直接使用mysql、mysqldump等命令不用每次先cd到 bin 目录。操作路径右键“此电脑”→“属性”→“高级系统设置”→“环境变量”。在“系统变量”区域找到Path双击编辑新建一项填入D:\mysql-9.1.0-winx64\bin确定保存。设置好后新开一个命令行窗口输入mysql --version如果能输出类似mysql Ver 9.1.0 for Win64 on x86_64的信息说明环境变量配置成功。到这里MySQL 9.1.0 已经算完整安装好了。接下来我重点讲讲实际使用中一定会遇到的几个问题和排查思路这些内容比安装步骤本身更值钱。5. 常见问题排查与避坑记录5.1 服务启动失败错误日志怎么看服务启动失败是出现频率最高的问题。net start MySQL91之后你可能会看到“服务无法启动”或者“发生系统错误 1067”这类提示。这时候不要慌先去看错误日志。错误日志默认在数据目录下文件名类似于DESKTOP-XXXX.err用记事本打开拖到最后几行真正的报错原因就在那里。常见原因有三类my.ini 路径写错导致找不到基础目录my.ini 编码问题带 BOM 导致解析失败端口被占用Windows 上尤其常见。如果日志里提到权限相关的错误检查你是否以管理员身份运行了初始化命令。如果日志里没有任何内容可以手动执行mysqld --console它会以前台方式启动并打印日志报错会更直观。还有一种情况是防火墙拦截了 MySQL 进程但本地登录通常不会受影响可以后续处理。5.2 3306 端口被占用怎么办端口被占用在我看来是最容易绕弯的问题。不少用户装了旧版 MySQL或者运行了其他服务占用了 3306新装版本怎么都启动不了。排查命令netstat -ano | findstr :3306如果列出了 PID再用tasklist | findstr PID查看是哪个进程占用的端口。如果是旧版 MySQL停止并卸载旧服务如果是别的程序最简单的方案是改配置端口。修改端口只需要编辑 my.ini把port3306改成 3307 或其他不冲突的端口然后重启服务。注意客户端连接时需要显式指定端口mysql -u root -p -P 3307。5.3 登录报 1045 和 2003 错误这两个错误码非常常见含义完全不同ERROR 1045 (28000): Access denied for user rootlocalhost密码错误或者账号权限有问题。检查你输入的密码是否正确注意大小写。如果刚初始化完忘记密码参考后面的“忘记密码”部分。ERROR 2003 (HY000): Cant connect to MySQL server on localhost (10061)服务没有启动或者端口不对。先确认服务是否已启动再确认连接参数。区分清楚这两个错误码能省很多时间我用表格整理一下错误码含义排查方向1045认证失败密码、账号名、权限2003无法连接服务状态、端口、防火墙1067服务启动异常看错误日志 .err5.4 旧客户端工具连不上 MySQL 9.1这是很多人忽略的一个大坑。MySQL 8.0 之后默认使用caching_sha2_password认证插件到了 9.x老旧的mysql_native_password插件已经被移除了。所以你如果用很老版本的 Navicat、DBeaver、或者旧版本 JDBC 驱动去连 MySQL 9.1很可能会报错Authentication plugin caching_sha2_password cannot be loaded或者Unable to load authentication plugin。解决方案只有一个方向升级客户端工具和数据库驱动。别想着把认证方式改回mysql_native_password因为 9.x 已经不支持这个旧插件了。你需要做的就是把 Navicat 升级到较新版本或者用 DBeaver、MySQL Workbench 8.0Java 项目的 JDBC 驱动也换成 MySQL Connector/J 8.x 以上版本。这类兼容性问题不是 MySQL 出错了是时代的进步淘汰了旧工具。5.5 忘记 root 密码怎么办忘记密码是每个人都可能遇到的事解决方案就是跳过认证表进入 MySQL 后手动改密码。操作步骤如下编辑 my.ini在[mysqld]段下加一行skip-grant-tables重启 MySQL 服务net stop MySQL91 net start MySQL91免密登录mysql -u root切换到 mysql 数据库并修改密码ALTER USER rootlocalhost IDENTIFIED BY 新密码; FLUSH PRIVILEGES;改回 my.ini删除skip-grant-tables这一行再次重启服务。这里有一个重要提醒skip-grant-tables模式下 MySQL 不校验任何登录密码任何人登录都不用密码很危险。改完密码后一定要立刻删除这行配置并重启。千万不要让 MySQL 长时间运行在这种模式下。6. 安装完后建议顺手做的事6.1 检查字符集避免中文乱码安装完成后第一件事我建议你检查一下字符集尤其是中文乱码的问题。登录 MySQL 后执行SHOW VARIABLES LIKE character%;理想状态应该是character_set_server为utf8mb4character_set_database为utf8mb4character_set_client为utf8mb4等等。因为我们在 my.ini 里已经设置了character-set-serverutf8mb4正常情况下没问题。如果某个环节显示latin1或gbk说明配置文件没生效或者连接时指定了别的字符集。实际项目中建库时也建议显式指定CREATE DATABASE testdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;这样能保证从数据库到表的各级字符集都是 utf8mb4后续不会出现中文炸出一堆问号的情况。6.2 需要远程访问时的配置方法如果你只在本机用这一段可以直接跳过。但做项目时经常需要让别的机器访问你的数据库甚至要让统一的数据库服务供团队使用那就需要配置远程访问。第一步在 MySQL 里创建允许远程连接的账号CREATE USER dev% IDENTIFIED BY 你的密码; GRANT ALL PRIVILEGES ON *.* TO dev%; FLUSH PRIVILEGES;dev%中的%表示允许从任意主机连接你也可以改成具体 IP比如dev192.168.1.100更安全。第二步检查 MySQL 服务的bind-address配置。默认情况下 MySQL 监听所有网卡如果你在 my.ini 里特意配置了bind-address127.0.0.1那就只能本机访问远程连接会被拒。这种情况需要把bind-address注释掉或设为0.0.0.0。第三步放行 Windows 防火墙的 3306 端口。管理员权限的 PowerShell 执行New-NetFirewallRule -DisplayName MySQL3306 -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow或者去“控制面板 → 防火墙 → 高级设置”里手动添加入站规则。远程访问安全很重要建议不要直接用 root 账号远程登录而是创建一个权限受控的新账号。6.3 干净卸载 MySQL别留一堆残留最后一个实操话题是卸载。很多人的电脑装过各种版本的 MySQL卸载不干净导致新版本装不上。这里我给出一个思路清晰的卸载流程。第一步停止并删除服务net stop MySQL91 mysqld --remove MySQL91第二步删除 MySQL 安装目录包括 my.ini 和 data 目录。如果直接用删除键删不掉检查是否有进程还在占用或者重启电脑后再删。第三步清理环境变量把 bin 目录从 Path 里删掉。第四步检查注册表残留。按Win R输入regedit进入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\路径删除MySQL91相关键值。这个操作需要谨慎确认是 MySQL 相关的再删别乱动其他键。如果你当初是 MSI 安装的还需要去“控制面板 → 程序和功能”里卸载 MySQL Server 相关组件。卸载干净后再装新版基本不会再出现莫名其妙的冲突。6.4 多版本共存一个端口不行就换一个MySQL 9.1.0 解压版配合多版本共存方案其实很简单。你想同时运行 8.4 和 9.1就准备两份不同的目录各写各的 my.ini端口一个用 3306、一个用 3307注册服务名分别叫MySQL84和MySQL91。每次需要用哪个版本就启动对应的服务连对应的端口。这个方案的底层原理就是MySQL 实例之间通过端口、数据目录、配置文件完全隔离服务名只是 Windows 层面上的区分标记。只要这三个不冲突装十个版本都不是问题。我在实际测试中经常用到这个方法比如验证同一个表结构在不同版本下的行为差异或者测试 JDBC 驱动的兼容性效率非常高。如果一次性写这么多说实在的安装本身并不复杂。我个人装过很多次 MySQL从 5.6 一路到 9.1最怕的不是配置复杂而是所有人都觉得配置文件不重要结果卡在编码问题、路径问题、服务名搞混这些细节上。这套流程走下来你已经完成了从下载到正常登录的全部环节。MySQL 跑起来之后剩下的建库、建表、配置权限就都是日常操作了而且你已经清楚它的配置文件和日志在哪里遇到问题也知道往哪个方向排查。这比任何一键安装包都踏实。