
MySQL 8.0.19 这个版本放在今天来看已经不算新了但如果你问我在 Windows 上装 MySQL 最推荐哪个版本我依然会犹豫一下后告诉你8.0.19 是一个非常稳的选择。尤其是那些对老系统兼容性有要求、或者被更高版本折腾过的朋友这个版本能用很小的代价把环境搭好后面写代码、做实验、跑项目基本不会因为数据库本身出幺蛾子。这篇文章我就从下载、安装到初始化、连接把整个流程拆开揉碎讲一遍适合刚接触 MySQL 的初学者也适合需要在老机器上快速部署的开发人员参考。先说清楚这篇文章覆盖什么Windows 系统下 MySQL 8.0.19 的两种主流安装方式一种是图形化的 MSI 安装向导一种是绿色版的 ZIP 解压安装。前者适合新手后者适合想控制一切细节的进阶用户。我会把各自的步骤、配置、坑和排查方法都列出来。文中涉及的下载地址、服务注册、密码修改、字符集配置等内容都是我实际跑过、确认可用的方案你可以直接照着做。1. 装之前先把这几件事想清楚1.1 为什么是 8.0.19MySQL 8.0 这个版本线从 2018 年开始一路更新到今天8.0.19 是 2020 年 1 月发布的版本。它不属于大跨度版本没有那种重构带来的基础行为变化但又比早期的 8.0.11、8.0.13 稳定了不少。在我使用过程中8.0.19 对 Windows 平台的支持算是一个分水岭官方从 8.0.20 开始基本放弃了对老版本 Windows 的兼容性优化很多运行库也升级到了新标准导致在比较旧的系统上容易出现莫名其妙的启动失败。换句话说8.0.19 是你兼顾稳定性和老系统兼容性的最后一个好选择。如果你手里是相对较新的 Windows 10 或者 Windows 11那装 8.0.19 也完全没问题它和新系统之间的兼容性很好日常开发、写 SQL、连各种可视化工具都没遇到过兼容障碍。对比来看装 8.0 早期版本可能缺少修复补丁装 9.x 又太新容易踩到一些不成熟的特性8.0.19 刚好处于一个恰到好处的位置。1.2 MSI 安装包还是 ZIP 压缩包这个选择很多人一开始没意识到直接默认下载了 MSI结果装到一半才发现跟自己预期不一样。其实两种方式各有优势MSI 安装包图形界面双击之后一路 Next安装向导会帮你完成数据目录初始化、服务注册、安全选项设置、环境变量配置等一堆工作。优点是省事适合第一次装 MySQL 的新手缺点是过程太“黑盒”出了问题不好排查而且卸载时容易残留。ZIP 压缩包官方提供的免安装绿色版解压后是一个纯目录结构。你手动配置 my.ini 文件手动执行初始化命令手动注册 Windows 服务整个过程完全透明可控。优点是干净、便于迁移、重复部署时效率极高缺点是对于零基础用户来说每一步都可能踩坑。我的建议是如果你是拿来学习或写作业直接用 MSI毕竟图形界面点击操作最直观如果你是开发机、服务器环境、或者想自己掌控目录结构优先 ZIP 解压版。这篇文章两种方式都会讲到你可以按需选择。1.3 安装前必查环境用户权限、端口、已装实例实际操作中很多人安装失败不是步骤错了而是环境里有脏东西。装之前最好花两分钟确认三件事第一当前 Windows 用户要有管理员权限。无论是 MSI 安装还是 ZIP 版注册服务没有管理员权限都会在最后一步被系统拦下来弹一堆让人摸不着头脑的报错。第二3306 端口不能被占用。MySQL 默认监听 3306如果你机器上已经装过其他版本的 MySQL、Mariadb、或者某些 KTV 点歌系统自带的数据库端口可能已经被占掉了。可以在 CMD 里执行netstat -ano | findstr 3306看看有没有进程监听如果有要么停掉它要么安装时换个端口。第三确认之前没装过残留的 MySQL 服务。如果之前卸载得不彻底注册表里可能还留着旧服务信息再装新版本时会出现服务名冲突导致启动失败。这种情况我会在本文后面讲卸载清理的部分专门展开。1.4 两个版本的选型对比对比项目MSI 安装版ZIP 解压版上手难度低全程图形界面中需要手动配置安装目录控制默认在 Program Files可任意指定纯英文路径配置可见性向导生成隐藏细节多自己写 my.ini完全透明批量部署不适合适合复制目录即可卸载清理麻烦易留残留简单删目录删服务即可典型适用场景新手学习、个人开发机服务器、开发环境、偏好掌控感的用户2. 去官网下载别下到奇奇怪怪的版本2.1 下载页导航MySQL 的下载页面本身不复杂但第一次去的人容易懵因为官网默认展示的是最新 GA 版本而不是 8.0.19。你要找旧版本必须点页面上的 “Archives” 入口。简单说打开 MySQL Community Downloads 页面在 MySQL Community Server 的下载区域找到 “Looking for the latest version Try the archives” 这个链接点进去就能按版本号选择下载。进入 Archives 后页面会让你先选 MySQL 版本把下拉框切换到 8.0.19然后再选操作系统默认应该选 “Microsoft Windows”下面的 OS Version 下拉框会根据版本列出一堆选项。8.0.19 时期官方提供了 Windows (x86, 64-bit) 的 ZIP Archive 和 MSI Installer没有 32 位版本如果你的操作系统还是 32 位的那只能换 5.7 或者更新系统了。2.2 确认文件名和完整版本下载界面会列出几个文件常见的两个是mysql-8.0.19-winx64.zip约 200MB 左右这就是绿色版压缩包。mysql-installer-community-8.0.19.0.msi约 300MB 左右这是在线/离线安装程序。如果你只想要服务器本体不想要一堆附带工具优先下载 zip 包或者 msi 的 server 安装类型。有些同学看到页面上还有mysql-workbench-community-8.0.19-winx64.msi这种文件那是数据库图形化管理工具可以一起下载也可以等服务器装好之后再补装完全不影响。下载时留意文件名里的版本号避免下成 8.0.20 或 8.0.21。还有一个容易踩的坑官网默认可能记录了你之前申请过 Oracle 账号下载时会让你登录。不用管它页面上通常会有一个 “No thanks, just start my download” 的灰色小链接点击就能直接下载不需要注册账号。2.3 下载过程中的几个小坑第一个坑是浏览器拦截。如果你的浏览器开了安全策略可能会把 exe 或 msi 文件当作高风险文件直接拦截掉。下载前可以临时调整安全级别或者下载后用右键选择“保留文件”。第二个坑是断点下载导致文件损坏。MSI 文件一旦损坏安装时会出现 1603 或 2753 之类的报错非常难查。建议下载时用浏览器自带的下载管理或者专门的下载工具保证文件完整性。下载完成后可以瞄一眼文件大小如果跟官网标注差了太多就重新下载一遍别硬装。第三个坑是文件被 Windows Defender 或第三方杀毒软件误报。MySQL 作为开源软件官方数字签名一般都会通过校验但有些国产杀毒软件对 msi 安装包的行为检测很敏感安装时建议暂时关闭实时防护装完再开回来。3. 用 MSI 安装向导一步步装好3.1 选择安装类型MSI 安装包双击后如果你下载的是完整版 installer它会先让你选择安装类型。常见选项有 Developer Default、Server only、Client only、Full、Custom。新手我建议选Server only因为这种模式只装 MySQL 服务器核心避免了 Developer Default 里附带一堆你可能根本用不上的组件也省去组件之间依赖检查出错的风险。如果你是按照项目要求必须装 MySQL 服务器那就更没必要选 Full 了。那些组件后面想要可以再通过单独的安装包补上先保证核心服务能起来比什么都重要。安装类型选完之后点击 Execute 执行依赖检查确认通过后进入下一步。如果之前机器上装了 Visual C Redistributable 等运行库检查通常会很快通过如果检查失败它会提示缺哪个组件你根据提示装好再重试即可。3.2 配置 MySQL Server 的关键选项MSI 安装到后期会启动一个 MySQL Server Configuration 向导这是整个安装过程的核心所有关键参数都在这里填。很多新手就是在这几步乱选导致后面登录失败。Type and Networking 这一步默认配置通常是 Development Machine端口 3306。如果你只是本机学习和开发选 Development Machine 就可以它占用内存相对小。端口建议保持 3306除非你前面查到端口被占用再去改 3307 之类的备用端口。下面的X Protocol Port是 MySQL 8.0 新引入的协议端口默认 33060没有特殊需要就保持默认。Authentication Method 这一步会让你选择默认认证插件。MySQL 8.0 默认推荐caching_sha2_password也是官方强力推荐的选项。但这里有个很实际的问题如果你以后要拿比较老的数据库客户端软件连接比如某些老版本 Navicat、旧代码里的驱动它们对caching_sha2_password支持不好连不上数据库。这种情况下建议选第二个选项Use Legacy Authentication等效于mysql_native_password兼容性好一些。我的建议是如果你确认客户端都是新版本用默认的如果心里没底直接选兼容模式后面少折腾。Accounts and Roles 这一步是设置 root 账户密码。这里输入的是一个自定义密码需要记好。密码尽量别太简单但也不要整一堆大写小写特殊符号结果自己忘了我见过太多人装完第二天就忘记密码。MySQL 8.0 的密码策略默认是中等强度太简单的密码会被直接拒绝设置时稍微复杂一点没关系。Windows Service 这一步向导默认会将 MySQL 配置成 Windows 系统服务服务名默认是MySQL80开机自启动。如果你不希望 MySQL 一直挂在后台占资源可以把 “Start the MySQL Server at System Startup” 前面的勾去掉。如果你是开发环境我还是建议保留开机自启免得到时候忘了启动服务导致程序连不上数据库白排查半天。3.3 安装完成后的服务状态确认配置向导点完 ApplyMySQL 会执行初始化、创建数据目录、启动服务等一系列操作。看到 “Processing configuration” 字样时不要关窗口等它跑完出现 “Finished” 表示成功。装完以后怎么确认真的成功了打开 Windows 服务管理器按 Win R输入services.msc回车在服务列表里找MySQL80看状态是不是 “正在运行”。如果是说明服务器本体已经装好。然后打开 CMD执行mysql -u root -p输入刚才设置的密码如果出现Welcome to the MySQL monitor字样就大功告成了。到这一步MSI 方式安装全程结束后面你可以直接跳到第五节看基本配置。4. ZIP 解压式安装适合批量部署和洁癖党4.1 解压与目录规划ZIP 安装方式更符合我一贯的习惯因为它不写一堆注册表垃圾所有东西都在一个目录里想清理直接删文件夹。先把下载好的mysql-8.0.19-winx64.zip解压到你想要的位置。这里有个重要提示解压路径一定不要包含中文和空格否则后续初始化或服务注册阶段很容易出问题。我一般放在D:\database\mysql-8.0.19-winx64目录层级清晰一看就明白是什么。解压后里面会有bin、docs、include、lib、share等目录my.ini现在并不存在需要你自己创建。4.2 手写 my.ini 文件在解压目录下手动新建一个文本文件改名为my.ini编码建议用 ANSI 或者 UTF-8但不要把文件头写成 UTF-8 with BOM否则 MySQL 读取配置时会报无法识别的字符。用记事本或者 VSCode 都能改注意保存时选对编码。my.ini 的内容不用写太多基础配置这样写就行[mysqld] basedir D:/database/mysql-8.0.19-winx64 datadir D:/database/mysql-8.0.19-winx64/data port 3306 character-set-server utf8mb4 default-authentication-plugin mysql_native_password这里几个配置项解释一下basedir是 MySQL 程序根目录datadir是数据存储目录如果你没提前创建 data 目录初始化程序会自动创建但我习惯先手动建一个空的data文件夹。character-set-server utf8mb4把服务器端默认字符集设置为 UTF-8避免后续建表出现中文乱码。default-authentication-plugin设置为mysql_native_password是为了兼容老客户端如果你客户端都是新版可以删掉这行用默认的caching_sha2_password。如果你在安装时想用 MySQL 8.0 的默认端口之外的端口比如 3307改port那行就行。注意 my.ini 里的路径分隔符Windows 下既可以写反斜杠也可以写正斜杠但反斜杠在某些字符组合下会被当成转义符稳妥起见我全部用正斜杠。4.3 初始化数据目录与注册 Windows 服务配置写好后以管理员身份打开 CMD开始菜单搜索 cmd右键选择“以管理员身份运行”进入 MySQL 的 bin 目录cd /d D:\database\mysql-8.0.19-winx64\bin首先执行初始化命令。这里有两种方式效果不同mysqld --initialize-insecure--initialize-insecure会生成一个 root 用户初始密码为空。这个方式对新手友好后续登录进去再改密码即可。如果你希望生成一个随机密码可以执行mysqld --initialize这种方式初始化结束后控制台不会显示密码而是在data目录下的xxx.err日志文件里生成一条临时密码你需要用记事本打开那个 err 文件找到A temporary password is generated for rootlocalhost开头的行后面的字符串就是临时密码。初始化成功后同一个管理员 CMD 里继续执行服务注册mysqld --install MySQL80 --defaults-fileD:\database\mysql-8.0.19-winx64\my.ini这里MySQL80是你要注册的服务名可以自定义--defaults-file明确指定配置文件路径。出现Service successfully installed说明注册成功。然后启动服务net start MySQL80如果一切正常CMD 会提示 “MySQL80 服务正在启动” 和 “MySQL80 服务已经启动成功”。如果启动失败别急去看看 my.ini 和 data 目录是否初始化成功这是 90% 的报错原因所在。4.4 登录并修改 root 密码服务启动成功后用空密码登录mysql -u root -p提示输入密码时直接回车因为是用--initialize-insecure初始化的进入mysql提示符。然后执行 SQL 修改密码ALTER USER rootlocalhost IDENTIFIED BY 这里写自己的新密码; FLUSH PRIVILEGES;如果初始化时用的是随机密码登录时会要求输入那个临时密码进入后同样执行上面的 SQL 改成自己的密码。到这里ZIP 解压版的核心安装流程就走完了。接下来我建议你用exit退出 MySQL 客户端再用新密码重新登录一次确认密码修改生效。5. 连接 MySQL 并顺手做基本配置5.1 命令行客户端的基本操作无论你用哪种方式安装最终都会用到命令行去操作数据库。打开一个 CMD输入mysql -u root -p回车后输入密码只要能看到mysql提示符就说明连接成功。在这个提示符下你可以执行 SQL 语句。先看两个最基础的命令SHOW DATABASES; SELECT VERSION();SHOW DATABASES会列出当前实例下所有的数据库默认会有 information_schema、mysql、performance_schema、sys 四个。SELECT VERSION()会输出当前数据库版本如果显示8.0.19说明安装没错。这里顺便提一个很常见的新手困惑输入密码时屏幕没有任何反应连星号都不显示这不是键盘坏了而是 MySQL 客户端为了安全默认隐藏密码输入你只管敲完回车就行。5.2 配置系统环境变量如果你不想每次打开 CMD 都先跑到 MySQL 的 bin 目录下才能执行 mysql 命令可以把 bin 目录加入系统环境变量 PATH。右键“此电脑” → 属性 → 高级系统设置 → 环境变量在系统变量里找到Path编辑新建一项填上D:\database\mysql-8.0.19-winx64\bin换成你自己的实际路径然后一路点击确定保存。重新打开一个新的 CMD直接输入mysql -u root -p只要不提示 “mysql 不是内部或外部命令”说明环境变量配置成功。这一步对开发机来说非常实用否则你每次想连数据库都得先 cd 一大串路径烦不胜烦。5.3 用 MySQL Workbench 连接数据库MySQL 官方配套的图形化管理工具是 MySQL Workbench。虽然现在很多人喜欢用 Navicat 或者 DataGrip但对新手来说 Workbench 免费、官方、功能足够作为入门工具挺好。下载地址同样是 MySQL 官网选择对应操作系统的 Workbench 版本安装后打开主界面会有一个 “MySQL Connections” 列表。新建连接时填写HostnamelocalhostPort3306UsernamerootPassword点击Store in Vault输入你的密码然后点 Test Connection如果显示 Connection Successful说明连接成功。Workbench 里左侧 SCHEMAS 面板能看到所有数据库点右键可以建表、建函数、跑 SQL操作很直观。如果你用的是老版本 Workbench连接 8.0.19 时可能会遇到认证插件报错那是因为 Workbench 版本太老不认识新的认证插件解决办法是升级 Workbench或者在 my.ini 里显式设置default-authentication-pluginmysql_native_password然后重启服务。5.4 顺手设置开机启动与字符集MSI 安装版默认已经把 MySQL 注册成自启动服务了ZIP 版注册的服务默认也是“自动”启动类型在服务管理器里能看到。如果你想手动控制可以打开服务管理器找到 MySQL80右键属性把启动类型改成“手动”或“自动”。开发环境我一般保持“自动”省心。字符集这个问题经常被忽略但真正用起来非常影响体验。MySQL 8.0 的默认字符集本身是 utf8mb4正常在建库时指定CHARACTER SET utf8mb4就不会乱码。但有时候你会发现通过客户端工具插入中文再查出来是问号那多半是连接层字符集的问题。可以在 mysql 客户端里执行SHOW VARIABLES LIKE character_set%;看character_set_client和character_set_results的值。如果这两个不是 utf8mb4可以在 my.ini 的[mysql]段下增加[mysql] default-character-set utf8mb4然后重启服务生效。这是我在实际项目中遇到过无数次的问题提前配置可以省掉很多后面排查乱码的时间。6. 常见问题排查实录6.1 端口占用3306 被抢了报错表现通常是安装配置时报端口冲突或者启动服务后远程连接不上。排查方法打开 CMD 执行netstat -ano | findstr 3306如果看到有进程监听 3306最后一列是 PID再用tasklist | findstr 对应PID看是什么程序占用。如果是自己机器上别的 MySQL 实例占用了要么停掉旧服务要么给新版改端口。如果是完全无关的程序占用了那就放弃这个端口把 my.ini 里的端口改成 3307连接时也对应改成 3307。别硬刚端口而已能连通就行。6.2 服务启动失败最常见的是路径和数据目录ZIP 解压版最常见的启动失败原因是my.ini里的路径写错或者datadir指定的目录没有成功初始化。启动失败后去 MySQL 目录下的data文件夹里找.err文件用文本编辑器打开最后一页看具体的错误提示。如果提示找不到路径那基本是basedir或datadir写错了。还有一个隐蔽问题如果你之前用高版本 MySQL 初始化过 data 目录再拿 8.0.19 启动时会报版本不匹配因为数据目录里有文件格式是新的老版本不认。解决方法是把 data 目录清空重新执行初始化命令。注意清空 data 目录等于删掉所有数据库数据这是最后手段操作前一定确认这台机器上有没有需要保留的数据。6.3 Access deniedroot 密码忘了怎么办这是问得最多的问题。密码忘了不代表只能重装MySQL 提供了一种“跳过权限校验”的临时模式。步骤如下以管理员身份打开 CMD停止服务net stop MySQL80。在 my.ini 的[mysqld]段下加一行skip-grant-tables。保存文件重新启动服务net start MySQL80。执行mysql -u root -p密码直接回车因为跳过校验了。进入后先执行FLUSH PRIVILEGES;然后ALTER USER rootlocalhost IDENTIFIED BY 新的密码;改完后把 my.ini 里的skip-grant-tables删掉重启服务用新密码登录。这里特别注意加了skip-grant-tables时数据库没有任何权限保护只能在内网本机临时使用改完密码务必立刻把配置删掉再重启否则相当于把数据库脱光了挂在外网。6.4 旧客户端连不上 8.0认证插件不兼容我见过有不少人明明安装成功了但打开 Navicat 等工具时一直报错提示 “Authentication plugin caching_sha2_password cannot be loaded” 或者 “Client does not support authentication protocol requested by server”。这就是典型的客户端版本太旧不支持 MySQL 8.0 默认的新认证插件。解决办法有两个方向一是升级你的客户端工具或数据库驱动到支持 caching_sha2_password 的版本二是给指定用户改回老认证方式。如果你不想折腾客户端可以执行ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密码;这个操作只影响你对应用户的认证插件不影响整个数据库行为。但要注意MySQL 官方计划在后续版本完全移除mysql_native_password所以这只能算临时应急方案。能升级客户端的还是优先升级客户端。6.5 彻底卸载重装的干净姿势装坏了或者想换个版本最忌讳的是直接从控制面板卸载后就安装新版那样大概率会撞上各种残留问题。我会按这个顺序清理停止并删除 MySQL 服务管理员 CMD 执行net stop MySQL80然后sc delete MySQL80。卸载 MSI如果用的是安装版去控制面板 → 程序和功能卸载 MySQL Server 和相关组件。删除安装目录、数据目录。数据目录一般位于C:\ProgramData\MySQL这个目录默认是隐藏的你需要在文件管理器里开启“显示隐藏的项目”才能看到。清理注册表。按 Win R 输入regedit删除HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL80之类的残留项。如果不懂注册表只做前三步通常也够用了。清理干净后再重新安装你会发现各种奇怪报错少了一大半。说句实在话大多数 Windows 下 MySQL 装不上的问题都跟旧残留有关先把环境弄干净新版本装起来几乎是一路顺风。到最后我想分享一个我个人的体会很多教程在讲 MySQL 安装时总是假设你一定会选 MSI 安装向导然后一路下一步。但实际上 Windows 下 MySQL 的坑恰恰藏在安装向导帮你掩盖的那些细节里。如果你愿意用一次 ZIP 解压版把 my.ini、初始化、服务注册这些底层流程走一遍之后再遇到任何 MySQL 启动、连接、乱码问题你都能比那些纯靠向导装的人更快定位到原因。这也是我为什么花了大量篇幅把两种安装方式都讲清楚的原因。希望这篇文章能帮你把环境一次性装好少走点弯路。