Windows 10安装MySQL 8.3完整教程与配置指南

发布时间:2026/9/13 15:50:55
Windows 10安装MySQL 8.3完整教程与配置指南 1. 安装前的版本认知与准备工作1.1 为什么选择MySQL 8.3它的版本特殊性先说一个很多人在下载页面容易忽略的关键信息MySQL 8.3属于Innovation版本不是一个长期支持版本。从MySQL 8.1开始Oracle把版本发布策略改成了“LTS版 Innovation版”双轨制LTS版本大约两年发布一次Innovation版本大概每三个月发布一次。8.3就是Innovation系列里的一个短周期版本它的主要意义是快速引入新功能稳定性也经过了8.1、8.2两个版本的打磨实测下来做开发环境和中小型项目的生产库完全没有问题。之所以值得单独写一篇Windows 10的安装教程是因为8.3跟之前的8.0系列相比有几个细节变化一是部分配置参数的默认值变了二是初始化方式和密码策略的提示更严格了三是官方文档里对Windows平台的安装说明分散在不同页面新手照着旧教程经常踩坑。这篇文章就是基于我在Windows 1022H2版本上完整安装、配置、排错的实际过程整理出来的每一步都给到可以直接复制的命令和配置。需要说明一个前提我这里用的系统是Windows 10 version 22H2 64位。强烈建议安装MySQL前先把Windows更新打好尤其要装上已发布的扩展安全更新。这不光影响MySQL能否顺利安装更关键的是MySQL 8.3用到的运行库和加密组件在老版本系统上会出现莫名其妙的DLL报错。另外提醒一句如果你的机器是VMware Workstation里的Windows 10虚拟机开虚拟化引擎前要确认BIOS里已经开启了Intel VT-x/EPT否则后面初始化时会卡死。1.2 客户端工具选型MySQL官方自带的MySQL Workbench现在做得已经很成熟但体积大、启动慢写SQL时的体验也一般。我更推荐装完MySQL本尊之后再配一个轻量级的客户端工具。命令行重度用户直接用系统自带的cmd或Windows Terminal就好习惯图形界面的可以考虑开源的DBeaver Community版它支持MySQL 8.x的caching_sha2_password认证插件省去你后面折腾认证方式的麻烦。Navicat方面如果你手头是老版本16.x以下的早期版本连MySQL 8.3有可能会出现“Authentication plugin caching_sha2_password cannot be loaded”的报错这个问题本质上不是MySQL的问题是老客户端不支持新默认认证插件。解决方法后面我会专门写到这里先留个印象。2. 下载MySQL 8.3安装包的两种方式我建议你选ZIP包2.1 MSI安装包与ZIP压缩包的区别MySQL官网的Windows下载页面同时提供MSI Installer和ZIP Archive两种方式这个选择直接决定你后面维护的体验我放在开始部分专门说清楚。MSI的方式对新手友好安装向导一步步点下去就行但实际用下来有几个让人不舒服的地方一是下载前强制要求登录Oracle账号很烦二是MSI安装器经常把服务默认安装在C盘迁移路径很麻烦三是有些安全软件会把MSI安装时的服务注册行为判断为风险操作容易莫名失败。ZIP Archive的方式是“绿色解压”的思路把文件夹拷到指定位置、改个配置、执行两个命令就完成了不写注册表卸载就是删文件夹。好处是路径完全可控、不产生系统垃圾、升级时只需要替换文件目录非常适合开发者在自己电脑上折腾。我的建议除非是公司统一用MSI批量部署否则在Windows 10上真没必要走MSI流程。下面所有操作都以ZIP Archive为准来讲解。2.2 下载与解压路径规范下载地址不直接贴了在MySQL官网的Download页面进MySQL Community Server选8.3.x版本平台选Microsoft Windows拿到的ZIP压缩包大概200多MB。看清楚是“Windows (x86, 32-bit), ZIP Archive”还是“Windows (x86, 64-bit), ZIP Archive”——现在绝大多数电脑都是64位选64位的那个。解压时一个特别坑的点ZIP包解压出来的目录名字通常带版本号比如mysql-8.3.0-winx64。因为这个要长期使用我建议把它重命名为一个干净的目录名比如C:\tools\mysql83去掉版本号后面配置、配环境变量、更新版本都方便很多。强烈建议不要解压到这些路径下含空格的路径比如C:\Program Files\MySQL——命令和脚本都要额外处理引号很恶心含中文的路径——容易触发服务注册和初始化的编码错误实测中遇到过U盘或网络映射盘——MySQL会拒绝初始化因为无法可靠地处理文件锁。解压完成后目录结构应该包含bin、docs、include、lib、share这几个关键子目录以及LICENSE、README等文本文件。看到这些就说明解压成功了。接下来第一步不是直接跑安装命令而是要改一个核心配置文件这个文件决定了MySQL的字符集、端口、数据目录等所有基础行为。2.3 配置my.ini文件这几项必须写对解压目录里默认没有my.ini需要手动创建。在C:\tools\mysql83里新建一个文本文件命名为my.ini注意编码格式最简单的方式是用记事本另存为时选择ANSI编码保存这个细节很重要MySQL在不同平台上对BOM字节序标记的处理不一致用带UTF-8 BOM的配置启动时偶尔会报配置解析错误。把下面这份配置作为起始模板这个配置兼顾了开发场景的易用性和生产场景的稳定性[mysqld] # 端口号默认3306如果被占用可以改成3307等 port3306 # 安装目录反斜杠需要写成双反斜杠 basedirC:\\tools\\mysql83 # 数据目录初始化后生成的数据库文件都在这里 datadirC:\\tools\\mysql83\\data # 允许最大连接数 max_connections200 # 默认字符集 character-set-serverutf8mb4 # 默认排序规则utf8mb4_0900_ai_ci是MySQL 8.x的推荐设置 collation-serverutf8mb4_0900_ai_ci # 默认存储引擎 default-storage-engineINNODB # 时区 default-time-zone08:00 # 使用原生密码认证兼容老客户端工具 mysqlx0 [client] # 客户端连接的默认端口 port3306 default-character-setutf8mb4这里解释几个关键项搞懂这些你就知道“为什么要这么写”basedir和datadir是MySQL最核心的两个路径前者是程序所在目录后者是数据所在目录。很多人安装后D盘空间爆掉、C盘告急都是因为没把datadir指到其他盘符。如果你打算把数据放到D盘一定要先建好数据目录文件夹MySQL不会自动创建。character-set-serverutf8mb4这一步强烈建议所有新安装都这么配。MySQL 8.0之前大家习惯用utf8但utf8在MySQL里实际只支持到3字节的UTF-8编码遇到生僻字和emoji就会存入失败。8.x虽然默认已经是utf8mb4但明确写在配置里是防止后期连接字符串、JDBC配置时被老教程误导。default-time-zone08:00只适合确定部署在中国境内的场景。这样配置之后系统底层时间存储统一使用UTC展示层统一转成本地时区避免在Django、Spring Boot等框架中遇到“查出来差了8小时”这种经典时区问题。如果你不确定服务器最终部署在哪里先不写这个配置项采用系统默认值后续再改。mysqlx0这一项是很多教程没提到的。MySQL 8.x默认额外开启一个33060端口的X Protocol协议服务主要用于文档存储API和高性能客户端连接。对于绝大多数传统SQL开发场景这个功能用不上反而多了一个暴露端口。开发机上关掉它少一层安全隐患。3. 完整安装步骤从命令行初始化到服务启动3.1 初始化数据目录关注临时密码配置好my.ini后以管理员身份打开命令提示符或者Windows Terminal。这一步提权很关键后续注册Windows服务、初始化数据目录都需要管理员权限直接双击打开cmd会踩权限坑。进入MySQL的bin目录cd C:\tools\mysql83\bin然后执行初始化命令mysqld --initialize --console--initialize参数的意思是执行数据目录初始化创建系统数据库和初始系统表--console参数让日志直接输出到控制台这样你能看到初始密码。执行过程可能会花一两分钟耐心等它跑完没有报错的话最后几行日志里会有一句类似这样的内容[Note] [MY-010454] A temporary password is generated for rootlocalhost: r8kLh2*u7QsW这里提示你立即把这个临时密码抄下来。临时密码是随机生成的只显示这一次后面登录还必须用它。很多人初始化完没注意等到登录时才发现找不到密码只能删除数据目录重新初始化折腾半天。这是个非常基础但非常容易踩的坑。初始化成功后C:\tools\mysql83\data目录下会生成mysql、performance_schema、sys等系统数据库文件夹。如果初始化过程报错大概率是你my.ini里的路径写错了仔细核对。3.2 注册Windows服务实现开机自启数据目录初始化好了MySQL还不能直接使用因为还没注册为Windows服务。注册服务的好处是让MySQL随系统自动启动不用每次手动敲命令。执行mysqld --install MySQL83提示Service successfully installed就说明服务注册成功MySQL83是服务名可以按自己喜好命名注意不要带空格。如果你的系统提示“Install/Remove of the Service Denied”说明当前命令行没有管理员权限右键重新以管理员身份打开再执行。接下来启动服务net start MySQL83看到“服务已经启动成功”的提示就正常了。如果你不想注册服务、只想临时手动跑一把直接执行mysqld --console但这种方式关掉窗口MySQL就退了只适合临时测试正常使用还是注册服务省心。我在一次实测中遇到过net start MySQL83后提示“服务正在启动”然后就没有然后了再查看服务状态是“已停止”。这种情况大概率是my.ini里的basedir或datadir路径写错或者data目录之前被初始化过但又不完整。最直接的排错方式是查看Windows事件查看器里的应用程序日志或者直接到错误日志文件里看它就在datadir目录下文件名类似DESKTOP-xxx.err尾部会写出具体是哪个参数加载失败。3.3 用临时密码登录立刻改密码服务启动后用命令行登录MySQL。还是在bin目录下执行mysql -uroot -p回车后它提示输入密码把刚才抄下来的临时密码粘贴进去。有一点要注意在cmd里粘贴密码时可能没有星号反馈这是正常的密码实际已经输入进去了。登录成功后命令行提示符变成mysql第一件事就是改root密码。MySQL 8.x的密码复杂度策略默认等级较高要求密码至少8位而且要包含大小写字母、数字和特殊字符。改密码的SQL是ALTER USER rootlocalhost IDENTIFIED BY 你的新密码;执行完刷新权限FLUSH PRIVILEGES;然后退出重新登录一次确认新密码生效EXIT; mysql -uroot -p到这里一个能跑起来的MySQL 8.3已经就位了。接下来要做的是验证正常性、调整连接方式这部分才是让MySQL真正好用的关键。4. 核心功能验证与连接方式配置4.1 基础SQL验证与版本确认重新登录MySQL后先跑几条基础命令确认一切正常SELECT VERSION(); SELECT NOW(); SHOW VARIABLES LIKE character_set_server; SHOW VARIABLES LIKE port;正常情况下输出结果应该是版本号显示8.3.0或你安装的具体次版本号当前时间正常字符集是utf8mb4端口3306。顺便看一下时区配置是否正确SELECT global.time_zone, session.time_zone;如果你没在配置里写default-time-zone这里很可能显示SYSTEM意味着跟随操作系统时区。如果你后续要部署的应用程序有跨时区需求建议按照我前面那段配置加上时区项避免后续在多台服务器之间出现时间不一致问题。4.2 创建业务数据库与普通用户别一直用root开发环境中很多人图省事全程用root连接数据库。这个习惯很不好一是root权限过大误操作后果严重二是多项目共用root账号后期回收权限、排查问题都特别麻烦。建议在安装配置完成后顺手就创建一个专用的业务用户。CREATE DATABASE IF NOT EXISTS demo_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci; CREATE USER demo_userlocalhost IDENTIFIED BY Demo123456; GRANT ALL PRIVILEGES ON demo_db.* TO demo_userlocalhost; FLUSH PRIVILEGES;这几条命令的含义分别是建一个名为demo_db、字符集utf8mb4的数据库新建一个只能在本地登录的用户demo_user把demo_db这个库的所有权限授予该用户。localhost限定登录来源如果你下一步要通过局域网IP连这台数据库需要再新建一个demo_user%或指定具体IP的用户这个后面讲远程连接时会展开。4.3 JAVA/Python等程序连接时的JDBC连接串注意事项Windows 10上装MySQL绝大多数场景是给本地的Web后端连数据库用。这里把我实测过两种主流语言的连接串写法给出来帮你一步到位。Java采用JDBC方式连接时驱动类名和连接串如下Class.forName(com.mysql.cj.jdbc.Driver); String url jdbc:mysql://localhost:3306/demo_db?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8allowPublicKeyRetrievaltrue; String user demo_user; String password Demo123456;其中allowPublicKeyRetrievaltrue这个参数特别提醒注意MySQL 8.x默认使用caching_sha2_password认证插件在某些未开启SSL的连接场景下客户端需要服务端公钥来加密密码传输如果没有这个参数会报Public Key Retrieval is not allowed的异常。Python使用PyMySQL时连接方式这样写import pymysql connection pymysql.connect( hostlocalhost, port3306, userdemo_user, passwordDemo123456, databasedemo_db, charsetutf8mb4 )如果报caching_sha2_password相关错误解决方法是在用户上把认证插件改回mysql_native_passwordALTER USER demo_userlocalhost IDENTIFIED WITH mysql_native_password BY Demo123456; FLUSH PRIVILEGES;不过要想清楚mysql_native_password是MySQL 8.x里已经标记为废弃的插件只是为了兼容老客户端才保留的能不用就尽量别用。更推荐的方式是升级你程序里的数据库驱动包现代的驱动早就支持新认证插件了。5. 远程连接配置与防火墙放行策略5.1 修改bind-address绑定地址MySQL安装后默认只监听本机地址127.0.0.1这意味着局域网里其他电脑访问不到这台数据库。如果你只是自己在开发机上用保持默认就好安全第一。但如果你需要从另一台电脑、或用Docker里的应用容器连接这台MySQL就要调整配置。把my.ini里的bind-address设置修改为bind-address0.0.0.00.0.0.0表示监听所有网络接口这样局域网内其他机器就能访问了。改完配置后需要重启服务才能生效net stop MySQL83 net start MySQL83顺带一提MySQL 8.x 安装后默认绑定的还是3306端口。我记得有个坑是安装时如果系统里已经装了WSL Ubuntu等环境WSL里的MySQL占用了3306端口这时你Windows里的MySQL服务能启动但外网就是连不上。遇到这种端口冲突用下面的命令排查最直接。5.2 Windows Defender防火墙入站规则修改绑定地址后还有一个拦路虎就是Windows自带防火墙。默认情况下Windows会拦截外部设备对本机的3306端口访问。添加放行规则的具体步骤打开“控制面板”依次进入“系统和安全 - Windows Defender防火墙 - 高级设置”在左侧选中“入站规则”右侧点击“新建规则”类型选择“端口”下一步协议选TCP指定本地端口填3306下一步选择“允许连接”然后勾选三个配置文件域、专用、公用保持默认即可最后输入规则名称比如“MySQL 3306”完成。实测中如果发现还是连不上尝试用管理员权限执行一条PowerShell命令快速添加效果等价netsh advfirewall firewall add rule nameMySQL 3306 dirin actionallow protocolTCP localport33065.3 允许远程登录的MySQL用户授权防火墙放行了MySQL监听地址也改了但如果你用demo_userlocalhost远程登录还是会被拒绝因为MySQL的用户本身就分“允许从哪里登录”。需要在MySQL里新增一个允许远程登录的同名用户CREATE USER demo_user% IDENTIFIED BY Demo123456; GRANT ALL PRIVILEGES ON demo_db.* TO demo_user%; FLUSH PRIVILEGES;这里的%是通配符表示允许从任何IP地址登录。如果只希望指定某台开发机来连把%换成那台机器的IP地址能更精细地控制访问来源。这类涉及数据库授权和网络访问的操作强烈建议遵循“最小权限”原则不要给用户授予所有权限。全部完成后在另一台电脑上测试连接mysql -h 你的IP地址 -P 3306 -u demo_user -p如果还是连不通按照这个顺序排查先ping一下IP通不通再用telnet 你的IP地址 3306测试端口通不通最后在MySQL命令行里查一下当前用户列表和权限是否真的生效。6. 常见问题与排查技巧实录6.1 服务启动失败与端口占用net start MySQL83提示服务启动失败这是Windows上最常遇到的问题。排除my.ini配置错误后十有八九是端口被占用。3306是MySQL默认端口但很多软件会试图占用它尤其如果你电脑上装了WSL Ubuntu或者其他MySQL环境。排查命令如下netstat -ano | findstr :3306输出结果里如果有LISTENING状态的记录最后那列数字就是占用端口的进程PID。再用这个命令查PID对应的程序tasklist | findstr 你的PID如果是别的应用占用了3306最简单的办法是改掉你自己MySQL的端口把my.ini里的port改成3307或其他可用端口然后重启服务。不建议直接杀掉占用端口的进程因为你不知道那个进程是什么服务杀错了可能影响系统其他功能。6.2 初始化时“注意不要把数据目录放在系统盘虚拟机上”还有一个我踩过的坑值得单独提醒如果你的Windows 10是跑在VMware Workstation里的虚拟机并且磁盘配置了动态扩展在虚拟机里初始化MySQL数据目录时会比较慢看起来就像卡死了一样。实际是虚拟磁盘在动态扩容过程中IO延迟变高初始化操作在耐心等待磁盘写入完成。我给的建议是虚拟机里如果初始化超过5分钟还没反应先打开任务管理器确认MySQL进程的CPU和内存占用情况如果是磁盘写入导致那进度条等一等就会跳动如果进程完全无响应那就考虑是不是虚拟磁盘真的满了。另外如果你在VMware的虚拟机里开启过“虚拟化Intel VT-x/EPT”选项但BIOS层面没有真正打开虚拟化初始化时也会出现异常行为。建议先去任务管理器-性能-CPU页面看一下“虚拟化”那一项是否为“已启用”。不是的话需要在虚拟机设置里勾选对应的虚拟化引擎选项或者去物理机BIOS里打开Intel VT-x。6.3 中文乱码问题登录MySQL后执行中文相关的INSERT或SELECT发现中文显示成问号或乱码。这个问题的根源一般是连接层面的字符集没对齐。MySQL服务端字符集配置好了但客户端工具或程序连接的字符集设置不对一样会乱码。用下面这条命令检查当前连接的所有字符集设置SHOW VARIABLES LIKE character_set_%;重点看character_set_client、character_set_connection、character_set_results这三项如果它们不是utf8mb4执行SET NAMES utf8mb4;不过SET NAMES只是临时生效退出重登就恢复了最一劳永逸的还是前面my.ini里配置的default-character-setutf8mb4然后客户端工具连接字符串里也明确指定utf8mb4编码。还有一个容易忽略的地方你用来写SQL的文本编辑器如果是用记事本保存的默认编码中文可能已经变成GBK了也会出现数据入库后变成乱码的情况。6.4 MySQL 8.3升级到MySQL 8.4 LTS的思路很多人在装完8.3之后会问是不是应该等8.4 LTS稳定版严格来说8.3是Innovation短周期版本官方对它的维护周期比LTS版本短但并不意味着不能用开发测试完全没问题。如果你在开发过程中接触到需要长期稳定维护的生产环境需求可以考虑升级到官方宣布的LTS版本8.4升级路径基本是备份数据 - 停服务 - 解压新版本到同样路径 - 启动服务 - 运行mysql_upgrade检查并升级系统表注意这个工具在8.3和8.4之间的行为有变化建议升级前查阅对应版本的官方说明再操作。对Windows 10个人开发机来说8.3直接长期使用也没有问题。7. 我的几个配置心得与收尾7.1 关于隔离环境、备份与清理数据库这东西多装几遍就熟悉了。如果不小心配置坏了想重装ZIP方式重装非常干净先执行net stop MySQL83再执行mysqld --remove MySQL83删除服务删掉整个目录和data数据文件夹重新解压初始化一次总计不超过十分钟。这比MSI方式卸载再清理注册表要清爽很多。日常使用中建议定期备份开发数据用一条命令就能导出整个库mysqldump -uroot -p demo_db D:\backup\demo_db_20250601.sql恢复的时候mysql -uroot -p demo_db D:\backup\demo_db_20250601.sql这个习惯看着简单真遇到重要数据误删时就知道有多救命了。7.2 慢查询分析与持续优化方向上手之后别急着开始写业务代码建议先把MySQL的慢查询日志打开这能帮你在初期就摸清本地数据库的性能表现。在my.ini里加一段slow_query_log1 slow_query_log_fileC:\\tools\\mysql83\\log\\slow.log long_query_time2执行时间超过2秒的SQL会被记录到slow.log文件里定期看一眼这个文件能早发现哪些表缺索引、哪些查询扫描行数太大。我见过很多开发机上的MySQL因为没开慢查询日志等代码写完了才发现SQL性能一塌糊涂在本地还好一上生产环境就被压垮了。7.3 最后再说两句实在话按照上面这一套流程走下来基本能达到一个比较顺手的开发环境干净目录、固定端口、utf8mb4字符集、自主可控的初始化账号、按需放行的远程访问、每天一条的备份命令。我在实际使用中最大的体会是安装本身并不难难的是安装之前搞清楚版本策略、安装之后把字符集和认证方式这类“隐藏雷点”一次性处理掉。如果你按教程走完仍然遇到问题不建议遇到报错就直接删库重来。把错误日志文件打开看最后几行输出绝大多数问题在那个文件里都有答案。编程这东西调试能力的核心其实就是学会读日志MySQL也一样。如果后续想把MySQL 8.3的安装配置做成一个一键脚本Windows 10配PowerShell可以自动化完成解压、写配置、初始化、注册服务这几步感兴趣的话可以顺着这个方向继续折腾会让下次换电脑、换同事的电脑时轻松很多。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询