ARTICLE DETAIL

资讯详情

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

MySQL 9.0在Windows 11上的完整安装指南:MSI与ZIP双方案及连接报错排查

MySQL 9.0在Windows 11上的完整安装指南:MSI与ZIP双方案及连接报错排查 说实话看到“MySQL 9.0”这个版本号的时候我第一反应是——它居然真的出9了。8.0系列用了这么多年突然跳到9.0很多人的第一直觉是“又是个测试版”实际不是这么回事。Oracle从8.1开始就把版本线分成了长期服务版和创新版两条腿走路9.0属于后者。它在Windows上的安装方式跟8.0大方向一致但细节坑真不少。这篇文章就是我从零开始在Windows 11机器上安装MySQL 9.0的全过程包括下载选包、MSI向导逐屏操作、ZIP免安装版的另一条路以及装完之后最容易遇到的一批连接报错。无论你是想尝鲜的新手还是正准备把开发环境切到9.0的老手照着走一遍基本能少踩一半的坑。1. 为什么我决定9.0出来就装以及它跟8.0到底差在哪1.1 版本线先理清Innovation和LTS是两种节奏很多人在安装MySQL 9.0之前第一个困惑是8.0还没用明白突然出9.0是不是又要重新学一遍其实不是。MySQL从8.1开始走“双版本线”一条是LTS长期服务版一条是Innovation创新版。像8.0和8.4就是LTS会持续有补丁和维护适合生产环境。而9.0属于Innovation创新版也就是把新功能快速推出来给社区尝鲜迭代节奏更快维护周期也短一些。所以你在Windows上装MySQL 9.0本质上是在体验官方最新的功能集合而不是等一个十年大版本。我用了一周下来的感受是9.0的核心用法跟8.0基本一致SQL语法、存储引擎、主从复制这些大框架都没变变的是一些底层的认证方式、权限粒度和新数据类型。这也意味着你从8.0迁移到9.0的学习成本远没有想象中高主要是周边生态工具的兼容性需要提前检查。1.2 9.0值得关注的几个变化装9.0之前先看它到底带来了什么这样你才知道自己是不是真的需要它。我整理了几个对Windows用户影响比较明显的点VECTOR数据类型。这是9.0一个比较显眼的新特性可以直接在表里存向量数据等于给MySQL加了一点“AI数据库”的味道。如果你拿MySQL做推荐、相似度检索类的原型这个类型会省掉很多外部向量化的中间步骤。认证插件彻底收紧。MySQL 9.0不再支持老旧的mysql_native_password新安装默认走caching_sha2_password。这个变化影响最大的不是数据库本身而是你的客户端工具和旧版驱动很多“连不上”“认证失败”的报错都是从这里炸出来的。更细粒度的权限控制。9.0把一些全局权限拆得更细比如部分操作能限制到连接来源或者针对特定数据目录对多租户和安全管理更友好。JavaScript存储程序继续演进。8系列里已经在推的JavaScript InnoDB存储函数在9.0里得到进一步加强。虽然日常开发用得不多但做数据校验和复杂业务逻辑时可以少写一层应用代码。这些特性的共同点是它们都在为“让MySQL更适合现代应用开发”铺路。如果你只是需要一个稳定数据库跑业务那9.0不是刚需但如果你在做新项目、AI相关原型或者想提前熟悉未来LTS版本的方向Windows上装一个9.0来折腾是非常合适的。1.3 哪些环境不建议直接上9.0我也得泼一盆冷水。下面这几种情况我建议你暂时别装9.0或者装之前先想清楚生产库还在用老版本驱动比如Java项目里的mysql-connector-java 5.1.x或者老旧的PHP扩展。9.0的caching_sha2_password认证会让这些“老伙计”直接罢工。你的项目里大量使用mysql_native_password创建的用户。9.0里这个插件已经没了迁移时需要对用户重新认证处理起来比较麻烦。机器是Windows 10以下的旧系统。MySQL官方对Windows的支持范围早就切到了Windows 10/11和Server 2019Win7上装9.0大概率启动不了服务别浪费时间。公司或团队有明确的版本规范规定生产环境必须用LTS。那就老老实实留在8.0或8.49.0装在自己开发机玩玩就行。判断清楚了这些再动手下载安装包接下来每一步才不容易跑偏。2. 下载安装包前先解决“我该装哪个版本”的选择题2.1 官网下载到底选哪个包MySQL的下载入口比较固定认准官方MySQL Installer页面就行。进到下载列表后会看到几个不同的包说实话第一次接触的人容易看花眼我说下实际区别安装包类型体积特点适合场景MSI Installerweb版几MB只是个引导器安装过程中联网拉取组件网络稳定、只想装标准组件的用户MSI Installerfull版三百多MB所有组件一次性打包下载网络一般、需要完整组件的Windows环境ZIP Archive两百多MB解压即用没有安装向导大批量部署、离线环境、喜欢手动控制的用户我自己优先推荐下载full版MSI Installer而不是web版。因为web版在安装时每一步都要联网下载组件一旦网络波动就容易卡在某个“Downloading”界面甚至进度条卡半天最后报错排查起来很折腾。full版虽然一开始要等个三百多兆的下载但后面安装流程一路顺畅体验好很多。2.2 MSI还是ZIP使用场景怎么分这个选择题也很常见。MSI安装向导适合对Windows不熟悉、希望“下一步下一步”就装好的场景它会自动帮你处理服务注册、初始化数据目录、生成配置文件这些脏活累活。但向导的自动化程度高也意味着一些细节黑盒化——比如my.ini到底改在哪、服务是怎么注册的、初始化用户权限怎么分配很多人装完其实并不清楚。ZIP免安装版则完全反过来。你需要手动解压、手动写my.ini、手动执行初始化命令、手动注册Windows服务每一步都看得见摸得着。它的好处是可以反复拷贝到多台机器做快速部署而且出了问题你能更准确地定位。如果你看完这篇就为了装个数据库直接走MSI向导。如果你想在服务器上批量布、或者喜欢“掌控一切”第5章的ZIP手动流程会更适合你。2.3 安装前的环境预检清单正式安装之前我建议你先花十分钟做一轮环境检查其中一个环节出问题后面可能折腾你半小时以上。第一确认系统版本。WinR打开运行框输入winver回车确认自己是不是Windows 10/11。如果还在用老系统9.0基本可以放弃。第二检查3306端口有没有被占用。安装向导默认要占用这个端口如果机器上已经有一个MySQL服务在运行或者有别的软件占了3306装的时候就会冲突。可以先打开CMD输入netstat -ano | findstr :3306如果返回了监听信息说明端口被占了大概率是你机器上已经有旧版本MySQL在跑。这时候需要考虑是卸载旧版本还是安装时把MySQL 9.0的端口改成3307。第三检查旧版本残留。如果曾经装过MySQL 8.x但已经不用了我建议先把它清理干净再装9.0。去“控制面板-程序和功能”里卸载MySQL相关的所有组件然后手动删除C:\Program Files\MySQL和C:\ProgramData\MySQL这两个残留目录。不清理的话两个版本的服务、注册表和配置文件容易互相干扰装完之后你会发现服务怎么也起不来数据目录也一堆莫名其妙的问题。第四确认有VC运行库。MySQL在Windows上编译后依赖Microsoft Visual C Redistributable缺了它安装向导会直接提醒或者装完服务启动报错。如果机器长期没更新过Visual C运行库建议先装一个2015-2022最新版省得后面卡壳。第五右键安装包时选择“以管理员身份运行”。这个步骤我说了很多遍但每次总有人忽略。MSI安装向导需要写ProgramData、注册Windows服务、修改系统环境变量这些操作没有管理员权限都会失败而且失败提示还不是很明显。3. MSI安装向导逐屏实录从启动到Complete3.1 Setup Type窗口组件到底选哪些运行MSI安装包后第一个关键界面就是选择安装类型。MySQL 9.0的向导和8.x基本一致会提供几个选项Developer Default、Server only、Client only、Full、Custom。Developer Default听着很方便但会装一大堆组件包括MySQL Shell、MySQL Router、MySQL Workbench、各种Connector整套下来要占好几个GB。如果你只是需要一个数据库跑业务我建议选Server only就装一个MySQL Server核心干净利落。如果你还需要图形化界面管理可以选Custom然后手动勾选MySQL Server和MySQL Workbench两项别的都不要。这里没必要贪多装太多组件既占空间还容易引入后续更新时的版本冲突。3.2 Check Requirements卡住时怎么办选定组件后向导会进入Check Requirements阶段自动检测系统缺失的依赖。最常见的就是提示缺少某个版本的Visual C Redistributable或者.NET Framework版本不够。这时候向导界面通常会把缺失项标红下面带一个Execute按钮点一下它会自动帮忙安装。这个阶段卡住的概率不高但一旦卡住绝大多数是Windows更新没打全导致的依赖识别异常。我的经验是先去“设置-Windows更新”里跑一次检查把系统补丁装完再重新启动安装向导比手动瞎点Execute有用得多。另外一个小细节如果Check Requirements阶段提示需要重启计算机别硬跳过。MSI安装程序在注册系统组件时可能需要重启才能生效强行继续大概率会在后续Installation阶段报错到时候还是得重启重来浪费时间。3.3 端口、认证方式、root密码这三个核心窗口走过Check Requirements之后安装向导会让你依次配置几个关键选项这是整个安装过程中最值得花心思的地方。第一个是Type and Networking。这里主要设置MySQL端口默认3306。如果你前面检查发现端口已经被占用可以在这里改成3307或其他端口。旁边还有一个“打开Windows防火墙端口”的选项勾选后会自动给3306添加入站规则方便局域网内其他机器连接。开发机勾上没问题生产服务器建议先不勾后面需要时再手动加防火墙规则安全一些。第二个是Authentication Method。这里强烈建议保留默认的“Use Strong Password Encryption for Authentication”说白了就是用caching_sha2_password认证。9.0里老式的mysql_native_password已经彻底移除了你就算想选legacy也没得选所以这里不需要纠结。但你要有心理准备这个认证方式要求客户端工具和驱动支持后面连不上的时候多半就是卡在这。第三个是root密码设置。向导会要求你给root账号设一个强密码至少8位最好包含大小写字母和数字。顺便可以在这里新建一个日常使用的业务账号而不是所有地方都用root。我个人强烈建议这么做——开发库虽然没那么敏感但养成“最小权限”的习惯能帮你避免很多低级事故。3.4 Windows服务配置和最后的Apply Configuration设置完密码后向导会问是否把MySQL配置为Windows服务。这里保持默认的“Configure MySQL Server as a Windows Service”勾选状态服务名一般自动生成MySQL90启动类型建议选Automatic。如果不把MySQL注册成服务意味着以后每次使用都要手动启动mysqld进程开着CMD窗口还不能关极其麻烦。只有当你打算用第5章的ZIP方式手动管理时才需要取消服务注册。服务配置完成后向导进入Apply Configuration阶段。这一步会依次执行写入配置、初始化数据库、启动服务等动作。如果前面的环境预检都做足了这一步通常是全绿的。万一哪个步骤打叉失败点击Log可以查看详细日志但更直接的方式是去看数据目录下的错误日志文件我遇到最多的“Start Service失败”都是因为端口冲突或者数据目录权限不对返回去检查这两处基本能解决。3.5 安装完成后的命令行验证整个向导走到Finished就算装完了但我建议不要急着打开Workbench先在命令行里验证一下核心功能。打开CMD执行mysql -u root -p输入刚才设置的root密码如果进入mysql命令行提示符就说明安装成功了。接着执行SELECT VERSION(); SHOW VARIABLES LIKE port; SHOW VARIABLES LIKE datadir;分别确认版本号、端口号和数据目录。尤其是数据目录这个值Windows上通常指向C:\ProgramData\MySQL\MySQL Server 9.0\data以后做备份、迁移、看错误日志都要用到它。4. 装完先别急着用环境变量、数据目录与连接验证4.1 PATH环境变量不配就意味着每次敲全路径MSI向导安装完后MySQL的安装目录通常是C:\Program Files\MySQL\MySQL Server 9.0里面的bin子目录存放着mysql、mysqldump、mysqladmin等命令。但这时候你打开一个新的CMD直接敲mysql大概率会提示“不是内部或外部命令”。原因很简单系统PATH环境变量里还没有这个目录。配置方法很常规右键“此电脑”-属性-高级系统设置-环境变量在系统变量的Path中新建一条C:\Program Files\MySQL\MySQL Server 9.0\bin。配完之后重新打开CMD再敲mysql --version能看到客户端版本信息就没问题了。别小看这一步不配的话你以后每次备份、导数据都要先cd到bin目录早晚会烦死。4.2 my.ini和数据目录确认关键配置落位MSI安装的一个特点就是配置文件my.ini不是我手动创建的而是向导自动生成的位置在C:\ProgramData\MySQL\MySQL Server 9.0\my.ini。注意这个目录默认是隐藏的在资源管理器里即使显示隐藏项目也不一定直接可见最方便的方式是复制路径到地址栏回车。打开my.ini能看到基本的端口、数据目录、字符集等配置。我建议至少确认两处一是character-set-server是否已经是utf8mb4MySQL 9.0默认就是这个但如果之前迁移过旧配置模板则可能是老的utf8二是mysqld区块里有没有奇怪的旧参数。9.0对旧参数兼容性已经没那么宽容了一些8.0时代常见的参数在9.0里可能直接导致服务无法启动。4.3 用Workbench和命令行完成首次连接验证完环境后再用图形化工具做一次完整连接。启动MySQL Workbench新建连接时服务器地址填localhost端口填3306用户名填root然后输入密码测试连接。这一步能通过说明从TCP层、认证层到权限层全部正常。如果你是一个喜欢在命令行工作的人也可以用mysqladmin做一个非交互式的连通性测试mysqladmin -u root -p ping返回mysqld is alive就代表数据库服务正常响应。另外我还习惯顺手确认一下SSL状态SHOW VARIABLES LIKE have_ssl;MySQL 9.0默认会自己生成一套SSL证书这个值为YES是正常的。后面遇到SSL相关的连接错误时这个变量的检查会派上用场。5. 免安装版ZIP解压手动安装没有向导时的标准动作5.1 解压与my.ini最小运行配置MSI方式虽然省心但如果你需要在多台Windows机器上快速部署相同环境或者所在网络环境不方便跑图形化安装引导ZIP免安装版反而更实用。我从官网下载mysql-9.0.x-winx64.zip后解压到C:\mysql-9.0然后手动新建一个my.ini放在解压根目录这是整个流程里最关键的一步。一个最小可运行的my.ini长这样[mysqld] basedirC:/mysql-9.0 datadirC:/mysql-9.0/data port3306 character-set-serverutf8mb4 collation-serverutf8mb4_0900_ai_ci default-authentication-plugincaching_sha2_password [client] port3306 default-character-setutf8mb4这里有两个容易被忽略的坑。第一是路径分隔符my.ini里推荐用斜杠而不是反斜杠否则某些情况下配置解析会出问题。第二是datadir指向的data文件夹不要手动创建让它由初始化命令自动生成手动创建反而容易因为目录权限不对导致初始化失败。5.2 初始化数据目录两种方式选一种配置写好后以管理员身份打开CMDcd到解压目录的bin文件夹执行初始化命令。常用的有两种方式效果差异很大。第一种是生成空密码的root账号适合本地开发调试mysqld --initialize-insecure执行完数据目录自动生成root用户没有密码直接mysql -u root --skip-password就能登进去然后再用ALTER USER来设置正式密码。第二种是生成随机密码更安全但也更容易让新手懵mysqld --initialize这种方式会在数据目录的.err日志文件里生成一行“temporary password”首次登录时必须用这个临时密码登录后立刻改成自己的密码。我自己的习惯是第一次调试用--initialize-insecure熟悉流程后再改成--initialize。因为随机密码一旦没保存好你只能重置密码或干脆删掉data目录重新初始化对新手来说很打击信心。5.3 注册服务、启动、验证初始化完成后MySQL还只是一个可执行的“裸进程”每次使用都要手动起mysqld非常不方便。为了让它像正常服务一样随开机启动需要手动注册Windows服务。管理员CMD中执行mysqld --install MySQL90 --defaults-fileC:/mysql-9.0/my.ini这条命令把MySQL注册成名为MySQL90的Windows服务同时绑定我们刚写好的my.ini。注册成功后启动服务net start MySQL90启动成功后执行mysql -u root -p能登录就说明全套手动流程已经打通。如果哪天想移除这套服务先net stop MySQL90停掉再执行mysqld --remove MySQL90即可。6. 热词里最常出现的几个连接错误我逐一复现过装完MySQL 9.0只是第一步真正让很多人崩溃的是装完之后各种连接报错。我在这台Windows机器上把几个高频问题都复现了一遍下面直接说排查思路和解决办法。6.1 端口被占用的定位与关闭症状是安装向导配置阶段服务启动失败或者你明明装好了Navicat、Workbench却连不上。先别怀疑密码用命令看端口netstat -ano | findstr :3306如果输出里有LISTENING状态的记录最后一列就是占用进程的PID。接着查这个PID是谁tasklist | findstr 5864确认是没用的进程后直接结束它taskkill /PID 5864 /F如果占用方向不是某个应用而是你自己之前装的MySQL 8.0那就需要去服务管理器把旧服务停掉或者干脆卸载旧版本。还有一个容易忽略的地方是Windows防火墙阻断了3306端口症状表现是localhost能连、局域网其他机器连不上。去防火墙入站规则里放行3306或者添加一条TCP入站规则问题立刻消失。6.2 ERROR 2026SSL连接错误的常见修复路径MySQL 9.0连接时如果看到ERROR 2026 (HY000): SSL connection error不要慌这多半不是数据库坏了而是客户端和服务器在TLS握手时出了问题。9.0默认开启SSL服务器端会自动生成证书但如果客户端版本太老、不支持新TLS协议或者系统证书库异常握手就会中断。我处理这个报错的顺序是先确认服务器端SSL状态正常然后升级客户端工具到9.0对应的版本。如果你只是想快速绕过SSL做本地调试可以在连接命令里显式禁用SSLmysql -h 127.0.0.1 -u root -p --ssl-modeDISABLED这条命令在生产环境不推荐但开发机上非常好用。如果问题出在服务器端证书路径可以去my.ini的[mysqld]区块检查ssl-ca、ssl-cert、ssl-key配置确认指向的.pem文件还存在且路径正确。6.3 0xe0434352MySQL工具本身的启动崩溃你可能在事件查看器或者应用启动弹窗里见过0xe0434352这个错误码。这个数字本身不是MySQL的错它是.NET Framework抛出的未处理CLR异常Windows上很多GUI工具都跑在.NET运行时上MySQL Workbench就是典型。遇到这个错误时工具还没到连接数据库那一步就崩了纯粹是应用运行环境的问题。修复方向我整理成几条经验第一步重新安装.NET Framework 4.8运行时第二步用管理员身份运行工具第三步删除工具在%APPDATA%下的缓存配置再启动第四步去“事件查看器-Windows日志-Application”里查找事件ID 1026对应的详细CLR异常内容。很多时候异常栈里会明确告诉你缺哪个DLL或配置照着处理比盲目重装软件有效得多。6.4 Java连接池连不上9.0驱动版本与认证插件开发JavaWeb项目的人到了这一步应该最有共鸣。项目代码没变但数据库换成MySQL 9.0后启动直接报连接池初始化失败。比较常见的报错有两种一种提示Unable to load authentication plugin caching_sha2_password另一种提示Public Key Retrieval is not allowed。前一个报错的原因基本可以锁定在驱动太旧比如还在用mysql-connector-java 5.1.x。它根本不认识caching_sha2_password这个认证插件自然就无法完成登录。解决办法就是升级驱动MySQL官方现在叫mysql-connector-j版本直接上9.x这个报错就会消失。后一个报错的场景比较特殊驱动版本不算太旧但JDBC连接串没有打开“允许获取公钥”的开关。caching_sha2_password算法在非SSL连接下需要向服务器申请RSA公钥来加密密码JDBC驱动为了安全默认禁止这个操作于是直接拒绝连接。解决办法是在连接字符串中加上参数jdbc:mysql://localhost:3306/demo?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneAsia/Shanghai这里我要特意提醒allowPublicKeyRetrievaltrue在生产环境有MITM风险只在开发机或内网测试环境用。如果你用连接池组件比如HikariCP、Druid记得同时更新驱动JAR到9.x否则光改连接串不换驱动一样会卡在认证阶段。这几类错误是我在Windows上装完MySQL 9.0后实际趟过的坑排查思路都遵循同一条主线先确认服务本身正常再检查客户端和驱动是否匹配新版本的认证方式最后才去怀疑网络和防火墙。如果你也是新装了9.0连不上建议按这个顺序过一遍比到处问人要管用得多。我个人在Windows上用9.0这段时间整体感觉是功能更新激进但日常使用还算稳下一篇打算把VECTOR数据类型在实际项目里的用法整理出来到时候再接着聊。
返回列表