MySQL 8.0.19 安装配置全攻略:Windows与macOS环境搭建及字符集避坑指南

发布时间:2026/10/14 16:23:31
MySQL 8.0.19 安装配置全攻略:Windows与macOS环境搭建及字符集避坑指南 1. 为什么还要聊 MySQL 8.0.19 这个“老版本”你可能觉得奇怪MySQL 都出到 8.4 甚至 9.x 了怎么还有人专门写 8.0.19 的安装教程我一开始也这么想直到去年帮一个做企业内部管理系统的团队排查环境问题才发现这个版本在不少实际项目里仍然是“钉子户”。原因很实在很多公司的测试环境、生产环境、甚至某些行业软件的依赖包都锁死在 8.0.19 这个版本上。你本地用最新版跑得好好的一部署上去就报错这种亏吃过一次就够了。所以这篇内容就是写给那些需要在本机搭建与线上完全一致的 MySQL 8.0.19 环境的人看的。不管你是刚入行的后端开发、正在做数据库课程设计的学生还是需要本地复现某个数据问题的测试人员只要你的目标环境是 8.0.19那跟着这篇走就能少踩很多坑。我会把 Windows 和 macOS 两个平台的安装流程都讲清楚重点放在版本对齐、初始化配置、Workbench 连接、以及建库建表时的字符集陷阱这几个最容易出问题的地方。先明确一个核心原则数据库版本、客户端工具版本、字符集配置这三者必须作为一个整体来考虑。很多人装完 MySQL 就用默认的 Workbench 去连结果中文乱码、时间字段报错、远程连不上其实都是因为把这三件事割裂开来处理了。下面我会按照“先想清楚为什么再动手做”的顺序把每个环节拆开讲。2. 安装前的整体规划与版本选择逻辑2.1 为什么锁定 8.0.19 而不是更新的小版本MySQL 8.0 系列从 8.0.0 到 8.0.40 之间有很多次改动其中 8.0.19 是一个比较特殊的节点。它在 2020 年初发布属于 8.0 早期版本中相对稳定、且被大量中间件和 ORM 框架验证过的一个版本。我遇到过好几次这样的情况某个项目用的连接池版本比较老连 MySQL 8.0.30 没问题但连 8.0.19 时握手协议有细微差异导致连接超时。反过来也一样有些老系统只认 8.0.19 的认证插件行为。从实操角度说如果你没有明确的版本锁定需求直接用最新的 8.0.x 或 8.4 LTS 当然更好。但如果你像我一样需要复现一个特定环境那就老老实实装 8.0.19。这里有个判断标准打开你项目的pom.xml、package.json或者requirements.txt看看数据库驱动版本再去查这个驱动官方文档里标注的兼容 MySQL 版本范围。如果范围里包含 8.0.19那装这个版本就是最稳妥的。2.2 安装包类型怎么选MSI、ZIP 还是 DMGWindows 平台上MySQL 官方提供两种主要安装包MSI 安装器和ZIP 压缩包。MSI 的好处是图形化引导自动配置服务、环境变量、数据目录适合不想折腾的人。ZIP 包则是“绿色版”解压后手动初始化适合需要多版本共存或者想完全掌控配置文件的场景。我个人的习惯是主力开发机用 MSI因为省事测试机或者需要同时装多个版本时用 ZIP。ZIP 包虽然多几步手动操作但好处是卸载时直接删目录就行不会在系统里留一堆注册表垃圾。macOS 上则是 DMG 安装包和 TAR 包两种DMG 双击安装TAR 包解压后手动配置逻辑和 Windows 类似。Workbench 这边相对简单它就是一个客户端工具版本号跟 MySQL 服务器保持一致就行。8.0.19 的 Workbench 连 8.0.19 的服务器基本不会出现兼容性问题。如果你用更高版本的 Workbench 去连 8.0.19大部分功能正常但某些新特性面板可能会报错所以还是建议版本对齐。2.3 安装前的系统检查清单动手之前先花两分钟确认这几件事能省掉后面很多麻烦磁盘空间MySQL 8.0 的数据目录初始就要 200MB 左右加上日志和后续数据增长建议至少留 2GB。Workbench 本身不大200MB 足够。端口占用默认端口 3306先跑一下netstat -ano | findstr 3306Windows或lsof -i :3306macOS看看有没有被占用。如果被占了要么改端口要么先把占用进程停掉。管理员权限Windows 上安装服务需要管理员权限macOS 上安装到/usr/local目录也需要 sudo。提前准备好别装到一半卡住。旧版本清理如果之前装过其他版本的 MySQL先把服务停掉数据备份好。特别是数据目录不同版本的数据文件格式可能不兼容不要直接混用。注意如果你之前用 ZIP 包解压过 MySQL 但没配置成功一定要把残留的my.ini或my.cnf删干净否则新安装的实例可能会读取到旧配置导致启动失败。3. Windows 平台完整安装与配置实录3.1 MSI 安装器的逐步操作与关键选项下载好mysql-installer-community-8.0.19.0.msi之后双击运行。第一步是选择安装类型这里有几个选项Developer Default、Server only、Client only、Full、Custom。我建议选 Custom因为 Developer Default 会装一堆你可能用不到的东西比如示例数据库、Excel 插件等拖慢安装速度。进入 Custom 之后在左侧列表里找到 “MySQL Server” 和 “MySQL Workbench”把它们移到右侧。注意版本号要选 8.0.19安装器有时候会默认勾选最新版手动改一下。接下来是安装路径默认在C:\Program Files\MySQL\MySQL Server 8.0如果你 C 盘空间紧张可以改到其他盘但路径里不要有中文和空格这是很多奇怪问题的根源。安装过程本身没什么好说的一路 Next 就行。真正关键的是安装完成后的配置向导这里有几个坑Config Type选 “Development Computer”它会根据你的机器配置自动分配内存。如果你机器内存小于 8GB选这个就行如果内存很大且专门做数据库测试可以选 “Server Computer” 手动调大缓冲池。Authentication Method这是 8.0 版本最大的变化点。它提供两种强密码加密SHA256和传统加密mysql_native_password。如果你的项目里用的驱动比较老比如 MySQL Connector/J 5.x那必须选传统加密否则连不上。选强密码加密的话后续可以用ALTER USER改但不如一开始就选对。Root 密码设一个你记得住的别搞太复杂。本地开发环境而已安全性和便利性要平衡。我一般用Root123456这种既满足复杂度要求又不会忘。Windows Service勾选 “Configure MySQL Server as a Windows Service”服务名默认MySQL80。这样开机自启不用每次手动开。配置向导跑完之后它会自动启动服务并做一次连接测试。如果测试通过说明服务器端没问题了。3.2 ZIP 包手动初始化的完整命令流程如果你选的是 ZIP 包流程会多几步但每一步都更透明。假设你解压到了D:\mysql-8.0.19-winx64接下来这样做第一步在解压目录下新建一个my.ini文件内容如下[mysqld] basedirD:\mysql-8.0.19-winx64 datadirD:\mysql-8.0.19-winx64\data port3306 character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci default-authentication-pluginmysql_native_password [client] port3306 default-character-setutf8mb4这里有几个点要解释。basedir和datadir必须用绝对路径而且datadir目录不要手动创建初始化命令会自动生成。character-set-server设成utf8mb4是为了支持完整的 Unicode包括 emoji 和生僻字。default-authentication-plugin设成mysql_native_password是为了兼容老驱动前面说过了。第二步以管理员身份打开命令提示符进入bin目录执行初始化mysqld --initialize --console这个命令会生成数据目录并创建一个临时 root 密码密码会直接打印在控制台里一定要复制下来。如果你不小心关了窗口那就只能删掉data目录重新初始化。第三步安装服务并启动mysqld --install MySQL80 net start MySQL80第四步用临时密码登录并修改密码mysql -u root -p输入临时密码后执行ALTER USER rootlocalhost IDENTIFIED BY Root123456; FLUSH PRIVILEGES;到这里ZIP 包的安装就完成了。相比 MSI多了一步手动写配置和初始化但你对整个环境的掌控力更强。3.3 环境变量配置与命令行验证不管用哪种方式安装都建议把 MySQL 的bin目录加到系统环境变量Path里。这样在任何目录下都能直接敲mysql命令不用每次都切到安装目录。配置完之后打开一个新的命令行窗口验证一下mysql --version应该输出mysql Ver 8.0.19 for Win64 on x86_64 (MySQL Community Server - GPL)。然后尝试登录mysql -u root -p输入密码后如果能看到mysql提示符说明服务器和客户端都正常了。这时候可以顺手看一下字符集配置SHOW VARIABLES LIKE character%;确认character_set_server和character_set_database都是utf8mb4。如果不是检查my.ini是否被正确加载。实操心得Windows 上环境变量修改后必须重新打开命令行窗口才会生效。我见过有人改完变量直接在旧窗口里试然后说“没用”其实是窗口没刷新。4. macOS 平台安装与 Workbench 连接配置4.1 DMG 安装包的操作要点macOS 上安装 MySQL 8.0.19下载mysql-8.0.19-macos10.15-x86_64.dmg根据你的系统版本选对应的包。双击挂载后会看到一个 pkg 安装包双击运行。安装过程中有一个关键步骤它会弹出一个临时 root 密码格式类似;hklsdf90*Kls。这个密码只显示一次一定要复制保存。如果你手快点了继续那就只能通过重置密码流程来找回比较麻烦。安装完成后MySQL 会出现在系统偏好设置里可以图形化启动和停止服务。但更推荐用命令行sudo /usr/local/mysql/support-files/mysql.server start sudo /usr/local/mysql/support-files/mysql.server stop登录和改密码的流程和 Windows 一样/usr/local/mysql/bin/mysql -u root -p输入临时密码后执行ALTER USER修改成你记得住的密码。4.2 Workbench 安装与首次连接Workbench 的 DMG 安装很直接拖进 Applications 文件夹就行。首次打开时它会让你创建一个连接。点击 “” 号填写Connection Name随便起比如Local-8.0.19Hostname127.0.0.1Port3306UsernamerootPassword点 “Store in Keychain” 输入你改过的密码点 “Test Connection” 测试。如果报错Authentication plugin caching_sha2_password cannot be loaded说明服务器端用了强密码加密而 Workbench 的驱动没适配。解决办法是在服务器端执行ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY Root123456; FLUSH PRIVILEGES;然后再测试连接应该就通了。4.3 连接失败的常见原因速查报错信息可能原因解决办法Cant connect to MySQL server on 127.0.0.1服务没启动检查服务状态启动 MySQLAccess denied for user rootlocalhost密码错误重置密码或确认密码Authentication plugin cannot be loaded认证插件不兼容改为 mysql_native_passwordUnknown database xxx数据库不存在先创建数据库Communications link failure端口被占用或防火墙拦截检查端口和防火墙设置这张表建议截图保存下次遇到问题直接对照排查比盲目搜索快得多。5. 数据库创建与字符集避坑指南5.1 创建数据库的标准语句与参数解释连接上之后第一件事就是建库。很多人随手写CREATE DATABASE mydb;然后后面插入中文就乱码。正确的写法应该是CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_unicode_ci;为什么用utf8mb4而不是utf8因为 MySQL 里的utf8其实是“阉割版”最多只支持 3 字节的字符存不了 emoji 和一些生僻汉字。utf8mb4才是真正的完整 UTF-8。排序规则用utf8mb4_unicode_ci而不是utf8mb4_general_ci是因为前者对多语言排序更准确虽然性能略低一点点但在本地开发环境完全无感。建完之后验证一下SHOW CREATE DATABASE mydb;确认输出的字符集和排序规则和你设置的一致。5.2 用户权限分配与远程访问配置本地开发通常直接用 root但如果你要模拟生产环境最好建一个专用用户CREATE USER devuserlocalhost IDENTIFIED BY Dev123456; GRANT ALL PRIVILEGES ON mydb.* TO devuserlocalhost; FLUSH PRIVILEGES;如果需要在局域网内其他机器访问把localhost改成%CREATE USER devuser% IDENTIFIED BY Dev123456; GRANT ALL PRIVILEGES ON mydb.* TO devuser%; FLUSH PRIVILEGES;但要注意%表示允许任何 IP 连接本地开发无所谓如果是在公司内网最好限制具体网段比如devuser192.168.1.%。注意MySQL 8.0 默认绑定127.0.0.1如果要允许远程连接还需要在my.ini或my.cnf里把bind-address改成0.0.0.0然后重启服务。这一步很多人会忘导致明明用户权限给了还是连不上。5.3 建表时的字段类型与索引建议建库之后就是建表。这里不展开讲完整的表设计只说几个和 8.0.19 相关的细节主键用BIGINT UNSIGNED AUTO_INCREMENT别用INT除非你确定数据量不会超过 21 亿。字符串字段根据实际长度选VARCHAR不要一律用TEXTTEXT不能有默认值而且索引效率低。时间字段用DATETIME还是TIMESTAMPTIMESTAMP有时区转换DATETIME没有。本地开发建议用DATETIME避免时区问题。索引命名要有规律比如idx_表名_字段名方便后续维护。一个简单的示例CREATE TABLE users ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, username VARCHAR(64) NOT NULL, email VARCHAR(128) NOT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY idx_users_username (username), KEY idx_users_email (email) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_unicode_ci;建完之后用SHOW CREATE TABLE users;检查一下确认字符集和引擎都正确。6. 常见问题排查与实操经验汇总6.1 服务启动失败的几种典型情况MySQL 服务启动失败是最常见的问题表现是net start MySQL80报错或者服务列表里状态是“已停止”。排查思路按这个顺序来第一看错误日志。数据目录下有个.err文件比如D:\mysql-8.0.19-winx64\data\DESKTOP-XXX.err里面会写具体原因。常见的包括端口被占用、数据目录权限不足、配置文件语法错误。第二检查端口。netstat -ano | findstr 3306如果被其他进程占了要么改 MySQL 端口要么停掉那个进程。第三检查数据目录。如果之前初始化过又删了部分文件可能导致数据目录不完整。解决办法是清空data目录重新初始化但这样会丢失所有数据所以只适用于全新安装。第四检查配置文件。my.ini里路径写错、参数拼错都会导致启动失败。可以先用mysqld --validate-config验证配置文件语法。6.2 中文乱码的根因分析与彻底解决中文乱码的本质是客户端、连接、服务器、数据库、表、字段这六个层级的字符集不一致。只改其中一层没用必须全部对齐到utf8mb4。排查步骤服务器层SHOW VARIABLES LIKE character_set_server;应该是utf8mb4。数据库层SHOW CREATE DATABASE mydb;确认字符集。表层SHOW CREATE TABLE users;确认字符集。连接层SHOW VARIABLES LIKE character_set_client;和character_set_connection都应该是utf8mb4。如果连接层不对可以在连接字符串里加参数比如 JDBC 的?useUnicodetruecharacterEncodingutf8或者执行SET NAMES utf8mb4;。实操心得我遇到过一种情况服务器和数据库都是utf8mb4但用 Workbench 插入中文还是乱码。后来发现是 Workbench 的默认连接字符集设置问题在连接配置的 “Advanced” 标签页里把 “Character Set” 改成utf8mb4就好了。这种细节官方文档不会专门写只能靠踩坑积累。6.3 版本升级与降级时的注意事项如果你本地已经装了其他版本的 MySQL想换成 8.0.19不要直接覆盖安装。正确做法是用mysqldump把现有数据库导出成 SQL 文件。停止并卸载旧版本服务。安装 8.0.19。导入 SQL 文件。降级更麻烦因为 MySQL 不支持跨大版本降级。8.0 的数据文件不能直接被 5.7 读取。如果非要降级只能用逻辑备份的方式在 8.0 里导出 SQL然后在 5.7 里导入。注意 8.0 的某些语法比如窗口函数、CTE在 5.7 里不支持导出前要确认兼容性。6.4 Workbench 使用中的效率技巧最后分享几个 Workbench 的实用技巧能明显提升日常操作效率快捷键CtrlEnter执行当前语句CtrlShiftEnter执行所有语句Ctrl/注释选中行。保存常用查询把经常用的 SQL 保存成.sql文件下次直接打开不用重新敲。导出结果集查询结果可以直接导出成 CSV 或 JSON在结果网格右上角有个导出按钮。查看执行计划在查询语句前加EXPLAIN然后点 “Execution Plan” 按钮可以图形化看到索引使用情况。这些技巧看起来小但每天省几分钟一年下来就是几十个小时。我自己最常用的就是CtrlEnter和保存查询文件基本离不开。踩过几次坑之后我最大的体会是数据库环境搭建这件事版本对齐比什么都重要。不要觉得“差不多就行”8.0.19 和 8.0.20 之间可能就有一个认证插件的差异让你排查半天。把版本、字符集、认证方式这三件事在一开始就定死后面能省掉 80% 的奇怪问题。

关于本文作者

来自尧图内容编辑团队

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

尧图内容编辑团队

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

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

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

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

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

网站改版的5个关键决策

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

获取专属建站方案

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

立即免费咨询