ARTICLE DETAIL

资讯详情

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

Windows安装MySQL 9.0全记录:新版特性、认证变更与避坑指南

Windows安装MySQL 9.0全记录:新版特性、认证变更与避坑指南 最近为了在本地折腾一套能长期做实验的数据库环境我在Windows上装了一次MySQL 9.0顺带体验了从下载到配置、再到接上各种客户端的完整流程。说实话很多人一听“9.0”就以为是8.x的小版本升级直接照着老教程一路Next最后卡在登录或服务启动上。这篇就把我在Windows上安装MySQL 9.0的完整过程、选型逻辑和踩坑记录写出来给想在Windows环境里尝鲜9.x的人当个参考。文章不光是照着安装向导点两下还会说清楚哪些环节容易翻车、为什么翻车以及装完之后要做什么才算真正能用起来。1. 先搞清楚你装的到底是什么9.0的版本定位安装之前我建议先花两分钟弄明白MySQL 9.0是个什么定位。这不是学院派较真而是直接影响到你到底该不该用它、装完之后能指望它活多久。1.1 创新版和LTS的差别MySQL从8.1开始切换了一套版本节奏不再像以前那样一个8.0大版本维护很多年而是分出了两类版本一类是LTS长期支持版一类是Innovation创新版。8.4是LTS版本维护周期和稳定性都很长适合生产环境。而9.0属于Innovation系列2024年发布的9.0.0是这个系列的新一代起点继承了8.4之后的主线迭代。创新版的特点是新功能先在这里落地但它只提供有限的维护窗口生命周期很短最多也就撑到下一个版本捞走这些新特性所以它并不是生产环境的稳定答案。你可以把LTS和创新版的关系理解成“年度旗舰手机”和“概念机”概念机跑得很激进、体验很新但你不太会把它当作唯一主力机来用。我在Windows上装9.0目的就是体验新语法、新数据类型顺便验证现有项目在升级主版本时哪些代码会挂而不是打算让它承担关键业务。1.2 9.0和8.x相比最值得关注的几个变化装之前我把发布说明快速过了一遍真正会在Windows安装和使用中体感明显的主要是这么几处mysql_native_password认证插件被移除。这是最直接的变化。旧版本里许多客户端默认用这个插件做密码校验到了9.0服务端不再提供这个插件老客户端连上来就会直接报错。这个坑我后面会详细讲。新增了VECTOR数据类型可以存定长向量做相似度检索之类的实验目前这个类型在存储引擎层有诸多限制比如不能作为主键、不能直接建索引但拿来学习和验证是没问题的。继续清理了一批8.0时期就标记为弃用的功能和系统变量行为更严格。比如8.4里已经停用的某些权限、变量配置在9.0里很可能直接不起作用了。安装包体和目录结构大体延续8.xWindows下的MSI安装向导几乎长一个样所以大部分老流程仍能沿用但新变化都藏在细节里。另外InnoDB依然是默认存储引擎MySQL的整体架构——连接层、SQL层、存储引擎层——没有本质变化所以之前在8.x上学的SQL优化、事务模型、索引原理到9.0照样成立。1.3 在Windows上装9.0的预期管理Windows上跑MySQL 9.0体验上跟8.x没什么代差但对系统环境还是有一个基本预期建议Windows 10 64位以上系统内存至少4GB磁盘留出2GB以上给安装目录和数据目录不说后续做实验的库也占空间。安装时尽量用管理员身份运行MSI很多时候安装器卡在某一步没权限不是软件的问题是UAC没到位。如果你是生产环境的老用户我劝你老老实实用8.4 LTS如果只是想学新东西、搭开发环境、验证升级兼容性Windows上的9.0值得一试。2. 下载与预检最容易在源头踩坑的环节安装MySQL最不该出问题的一步反而坑过不少新手就是下载。这环节问题通常不是“找不到”而是“从哪下、下哪个、怎么下才算对”。2.1 从官网拿安装包的正确姿势MySQL的官方下载地址是dev.mysql.com/downloads/mysql/进到页面后默认展示的可能是最新的LTS版本要想拿9.0得在版本选择下拉框里找到9.x创新版比如9.0.x或者更新一点的9.x。页面往下拉会看到Windows (x86, 64-bit)相关的安装包选项主要有两种MSI Installer图形化安装向导推荐给绝大多数人特别是新手。ZIP Archive解压即用的绿色版适合想完全掌控目录结构、或者做免安装集成的人。我选择的是MSI Installer因为后续配置服务、注册Windows服务、初始化数据目录都有向导帮忙省事。顺便提一句官网上那个“Login”按钮不是关卡不用注册Oracle账号页面里通常会有“No thanks, just start my download”之类的跳过入口点它就能直接下安装包。第三方网站、某些教程里附带的网盘链接能不下就不下一个是版本可能被改过另一个是安装包体积不小经过别人手的东西没法验证哈希值装完出什么问题都说不清。官网下载页旁边一般也会给出MD5和SHA256校验值有条件的话下完顺手验一下。2.2 安装前检查一下宿主机环境下载安装包的间隙可以在Windows上做三件很小的预检能省掉不少后续麻烦看3306端口是否被占用。MySQL默认端口是3306如果机器上已经跑了别的MySQL实例、或者有程序占了这个端口安装器检测时会直接警告。检查命令是netstat -ano | findstr :3306如果有输出记下最后一列的PID再去任务管理器里确认是哪个进程把冲突解决掉再装。检查是否残留旧版MySQL。如果之前装过8.x且没有卸载干净注册表和数据目录里可能有旧服务安装9.0时容易冒出“服务已存在”或“端口被占用”的提示。卸载旧版后最好顺手把C:\ProgramData\MySQL和C:\Program Files\MySQL目录确认一下该清理就清理。关闭暂时的杀软监控或防火墙拦截。部分杀毒软件会对安装器写入Program Files或注册表的行为敏感导致安装中途中断。不是让你长期关掉安全软件只是安装期间放行一下装完再开起来。另外网络上是常常有人问“Windows下要不要先装.NET Framework或Visual C运行库”。MySQL的MSI安装包会自动检测并安装它依赖的运行库大部分情况下不需要自己手动提前装前提是操作系统更新补丁打得比较完整。3. 安装向导逐项拆解每个选项都没你想得那么复杂MSI向导的界面虽然每一步都显得很严肃但其实真正需要你动脑的选项并不多。我拿9.0实测走了一遍下面按步骤讲清楚。3.1 Setup Type别在Developer Default上盲目打勾安装向导第一步会让你选择安装类型常见选项有Developer Default、Server Only、Client Only、Full和Custom。许多人图省事会选Developer Default但要注意这个选项会连带安装很多组件比如MySQL Shell、MySQL Router、Visual Studio集成、Excel插件等。如果你是只想跑一个数据库服务那么这里选Server Only更干净占用的磁盘和后台进程都少。我装的时候就选了Server Only后续需要哪个客户端再单独补没必要一把梭。如果你更愿意用Custom可以自己勾选组件这时要理解两个基础概念MySQL Server是核心服务MySQL Workbench是官方图形客户端8.0.x版本可以连接9.0服务只是要确认Workbench本身也更新到较新补丁版本。3.2 Type and Networking端口、协议和X Protocol配置阶段第一步是Type and Networking里面主要是三类设置配置类型开发机选Standalone MySQL Server就行端口保持默认3306。MySQL X Protocol端口默认33060。X Protocol是MySQL提供的一套基于NoSQL风格的接口端口如果你用官方Shell或某些新客户端走X Protocol会用到它默认开启没有坏处。连接协议Windows下一般选TCP/IP即可防火墙需要允许3306端口入站否则局域网内其他机器连不上。这里不需要动太多手但要知道3306和33060是两个不同端口别把防火墙只放行一个就以为万事大吉。3.3 Authentication Method和Accounts决定你能不能连得上配置向导在Types and Networking之后会进入认证方式和账户设置。这一步在新版里关系重大尤其是9.0。认证方式选择界面一般有两种表述一种是“Use Strong Password Encryption强烈推荐”对应caching_sha2_password另一种是“Use Legacy Authentication”对应旧版mysql_native_password。在9.0里旧方式已经默认移除所以没有纠结空间直接选强密码加密即可。接着设置root密码。我建议你用一个专门为本地实验准备的强密码别用空密码也别用root这种。后面还可以勾选“Create User”来建一个日常用的业务账号设置权限时最好避免直接给全局超级权限给该库的增删改查权限就够了。3.4 Windows Service做成服务还是手动启停再往后是Windows Service配置。选项是把MySQL注册成Windows服务服务名默认是MySQL90或类似形式勾选“Start at System Boot”可以让开机自启。本地开发机我建议保留自启省得每次手动net start。运行服务所用的系统账户通常选默认的Network Service或Local System即可不需要自己填域账号。最后一步Apply Configuration是向导开始自动执行配置初始化数据目录、安装服务、启动服务、写入环境变量。等它跑完出现绿色勾才算安装完成。如果某一步报错先看具体红字是哪一步不要把日志关了就重试下面我专门写了一段排错思路。4. 首次登录与新认证机制这里干掉了我半小时装完并不代表能用第一次登录才是很多人现实里的拦路虎。我这次在Windows上装完9.0用Workbench和旧习惯命令试了几回绕了点弯路才摸清问题源头。4.1 9.0认证插件变化旧款客户端直接“失联”启动MySQL服务后我打开命令行窗口顺手用mysql -uroot -p登录结果输入密码后直接弹出一个经典的报错Authentication plugin caching_sha2_password cannot be loaded第一反应是密码错了再试还是这样。查了一下才发现问题出在我用的是系统中一个比较旧的命令行客户端很可能是之前某个项目带的旧版mysql.exe。这个旧版客户端不认识caching_sha2_password所以才报“无法加载认证插件”。MySQL 9.0服务端默认使用强加密认证并且移除了旧认证插件所以旧客户端连不上就属于正常现象。解决办法不是去改服务端认证方式——因为9.0里根本不让你改回落选项了——而是要更新客户端。对命令行工具换用MySQL官网新版客户端或MySQL Shell对图形化工具把MySQL Workbench升级到较新版本Navicat for MySQL也要使用支持8.0认证方式的较新版本。说到底9.0是在用这种方式倒逼你更新工具链这次“连不上”既是坑也是在提醒你别再守着十年前的老客户端。4.2 root密码校验怎么确认服务真的起来了排除客户端问题后登录前先确认服务状态。在命令行窗口执行net start | findstr MySQL如果能看到MySQL90说明服务已启动。然后到MySQL安装目录的bin文件夹下使用新版客户端登录mysql -uroot -p输入密码后进入mysql交互界面执行一句SELECT VERSION();能看到9.0.x这就说明服务端的连通性没问题。之后建议立刻执行一句ALTER USER rootlocalhost IDENTIFIED BY 新密码;如果一开始安装时设的密码太弱或想换成自己习惯的复杂密码就在这一步调整。注意不要直接用UPDATE mysql.user SET ...改密码那是老教程的做法在8.0以后已经不推荐9.0更是走ALTER USER最稳妥。4.3 忘记密码时怎么捞回来本地实验环境最容易发生的另一个场景是密码忘记了。如果你在Windows上把root密码丢了可以按这个思路找回停掉MySQL服务net stop MySQL90在配置文件my.ini的[mysqld]段临时加一行skip-grant-tables重启服务此时可以免密登录用ALTER USER改密改完立即把skip-grant-tables这行注释掉再重启服务skip-grant-tables会让MySQL跳过权限验证所以这招只能临时用密码改完务必去掉不然服务等于裸奔。这也是一个我建议把环境变量和服务管理尽快掌握的原因日常真的用得上。4.4 顺手体验一下9.0的VECTOR字段登录成功后可以顺手建一个带VECTOR字段的小表感受一下新版本特性。比如CREATE DATABASE demo; USE demo; CREATE TABLE sample_vec ( id INT PRIMARY KEY, content VECTOR(3) ); INSERT INTO sample_vec VALUES (1, [1.0, 2.0, 3.0]); SELECT * FROM sample_vec;这个VECTOR(3)就是一个包含3个维度浮点数的向量字段看起来简单但它是9.0引入的全新数据类型以后做向量检索实验会越来越常见。要注意插入语法是用方括号括起来的字符串而不是MySQL原生的语法结果。顺便说一句正常业务里VECTOR字段暂时不建议当唯一依据或主键限制还是很多拿来学习和验证接口最合适。5. 落地收尾环境变量、字符集、备份脚本与GUI连接服务能登录、SQL能跑把安装包算“装上了”还远不够。开发机上要让它用起来顺手还得做几件收尾的事。5.1 环境变量配好不再到处找bin目录安装向导有时会帮你把MySQL的bin目录加入PATH但免安装版本或某些自定义安装不会。没配的话每次都要到C:\Program Files\MySQL\MySQL Server 9.0\bin里执行命令很烦。手动配置步骤右键“此电脑” → 属性 → 高级系统设置 → 环境变量找到系统变量里的Path编辑新增一行填你的bin目录地址确定后重新开一个命令行窗口输入mysql --version能输出版本信息就说明配好了配好之后mysql、mysqldump这些命令能在任意目录直接用后面写脚本也更省事。5.2 字符集和时区开局就定好不然后面全是乱码Windows上装MySQL一个老生常谈的坑是字符集。默认情况下可能会使用latin1或随系统环境决定的字符集导致中文显示乱码。建议在my.ini里显式配置[mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_0900_ai_ci default-time-zone08:00 [client] default-character-setutf8mb4utf8mb4是完整支持中文和emoji的字符集9.0依然推荐它。时区配置按你的实际时区来这里以UTC8为例。改完配置重启MySQL服务net stop MySQL90 net start MySQL90重启后执行SHOW VARIABLES LIKE character_set_server;确认输出的是utf8mb4再插入一条中文数据测试基本就不会乱码了。5.3 自动备份一行bat脚本解决日常焦虑本地实验环境虽然不需要像生产库那样做复杂备份但万一哪天手滑删错表还是有备份更安心。Windows下做个简单的自动备份可以用计划任务加bat脚本echo off set BACKUP_DIRD:\mysql_backup set MYSQL_EXEC:\Program Files\MySQL\MySQL Server 9.0\bin\mysqldump.exe set TIME%date:~0,4%%date:~5,2%%date:~8,2% %MYSQL_EXE% -uroot -p你的密码 --databases demo %BACKUP_DIR%\demo_%TIME%.sql大概逻辑就是把mysqldump导出的SQL重定向到一个按日期命名的文件里再配合Windows任务计划每天执行。密码直接写在bat里仅适用于本机低安全环境正式环境建议改用更安全的凭据管理方式。5.4 Workbench和Navicat连一下图形化客户端我还是推荐的。MySQL Workbench是官方出品连接前确认版本足够新。打开Workbench新建连接Hostname填127.0.0.1Port填3306用户名填root密码输入安装时设置的密码测试连接成功后就能进图形界面。如果你习惯用Navicat for MySQL同样注意选新版本不然9.0的认证方式连不上。命令行里也可以顺手把数据库和索引建好CREATE INDEX idx_name ON sample_vec(id); SHOW INDEX FROM sample_vec;新版本里创建索引、排序、更新语句的行为和8.x基本一致但老项目里的mysql_native_password相关配置、旧的密码设置语法到了9.0就给报错这是升级时最需要扫雷的地方。6. 实测排错记录服务起不来、连不上、格式报错三类问题最后把我在Windows上装9.0时实际遇到的三类问题整理一下每类都按“现象 → 原因 → 排查步骤 → 解决办法”的链路写方便你照着复现排查思路。6.1 安装器提示“Windows Installer”服务类型或权限不足现象MSI安装进行到一半弹窗提示没有足够权限或直接回滚。原因九成是没以管理员身份运行安装包或者系统组策略限制了MSI安装。排查与解决右键安装包选择“以管理员身份运行”确认Windows Installer服务处于启动状态在服务管理器中把Windows Installer设为启动关闭实时防护软件后重新执行安装程序。如果之前安装失败留下了残留还要先清理C:\Program Files\MySQL和C:\ProgramData\MySQL目录否则第二次安装容易撞上旧配置。6.2 MySQL90服务启动失败事件查看器里有错误现象安装向导最后一步启动服务时打红叉或手动net start MySQL90提示“服务无法启动”。原因常见是my.ini配置了无效参数、数据目录初始化不完整、3306端口被占用偶尔也有权限问题。排查步骤先去MySQL数据目录通常C:\ProgramData\MySQL\MySQL Server 9.0\Data看.err后缀的日志日志里一般会直接写明报错行和原因。看到[ERROR]关键字的行之后逐条搜索解决。比如端口被占用就去改port配置或清理占用进程配置参数报错就去检查my.ini的那一行权限问题就确认数据目录的所有者是否包含Network Service。解决的总体原则是“先看日志再动手”不要凭感觉反复重启服务。6.3 能ping通但连不上或连接一直卡住现象本地登录正常但局域网内别的机器、或者Docker容器里的应用连不上3306。原因Windows防火墙默认放行可能有偏差或者服务端配置了bind-address限制监听地址。排查与解决在MySQL命令行执行SHOW VARIABLES LIKE bind_address;如果地址是127.0.0.1说明只监听了本机回环要改成0.0.0.0或注释掉这一行。确认没有启用skip-networking该参数开启后MySQL不再监听TCP端口。Windows防火墙入站规则里新增对3306端口的放行如果使用X Protocol还要放行33060端口。实际开发中很多人卡在“服务正常、本机能连、别的机器连不上”一大半是防火墙没放行而不是MySQL本身的问题。坦白说在Windows上装完MySQL 9.0之后我对这个新版本的态度是实验和学习非常好用VECTOR类型和更严格的认证机制都在倒逼整个工具链向新版本靠拢但要我把它用在长期跑业务的生产服务器上我还是会再考虑一下毕竟9.0是创新版稳定性窗口还没法和LTS版本比。按我个人的习惯装完这个9.0之后会在同一台机器上再准备一个8.4 LTS的实例日常写项目、搭业务用8.4想玩新东西就用9.0。如果你是为了尝鲜或者准备把老代码升级到新版本那这篇流程应该能帮你少走不少弯路。
返回列表