前言MySQL 8.0 相比 MySQL 5.x 带来了巨大的性能提升和新特性如窗口函数、CTE、JSON增强、默认utf8mb4等但直接从 MySQL 5 升级到 8 存在诸多陷阱。本文将从彻底卸载旧版本开始手把手带你完成 MySQL 8 的干净安装确保不踩坑。第一部分彻底卸载 MySQL 5.x关键步骤⚠️警告不彻底清理旧版本会导致 MySQL 8 安装失败或配置冲突1.1 Windows 系统卸载步骤步骤 1停止 MySQL 服务按Win R输入services.msc打开服务管理器找到 MySQL 相关服务右键选择停止。步骤 2卸载 MySQL 程序打开控制面板 → 程序 → 程序和功能找到所有 MySQL 相关程序包括 MySQL Server、MySQL Workbench、MySQL Connector 等逐一卸载。步骤 3删除残留文件重点卸载程序后必须手动删除以下目录# 默认安装目录 C:\Program Files\MySQL C:\Program Files (x86)\MySQL ​ # 数据目录默认隐藏 C:\ProgramData\MySQL ​ # 用户数据目录 C:\Users\[你的用户名]\AppData\Roaming\MySQL提示ProgramData是隐藏文件夹需要在文件资源管理器中开启显示隐藏的项目。步骤 4清理注册表Windows 必须做按Win R输入regedit打开注册表编辑器删除以下路径HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Eventlog\Application\MySQL HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Services\Eventlog\Application\MySQL HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Application\MySQL HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL步骤 5删除环境变量右键此电脑 → 属性 → 高级系统设置 → 环境变量在系统变量Path中删除所有包含 MySQL 的路径。步骤 6重启电脑必须重启确保所有 MySQL 进程和文件句柄释放干净。1.2 Linux 系统卸载步骤CentOS/RHEL 系统# 1. 停止 MySQL 服务 sudo systemctl stop mysqld ​ # 2. 查看已安装的 MySQL 组件 rpm -qa | grep mysql ​ # 3. 卸载所有 MySQL 包 sudo yum remove mysql-* -y ​ # 4. 删除数据目录和配置文件 sudo rm -rf /var/lib/mysql sudo rm -rf /etc/my.cnf sudo rm -rf /etc/my.cnf.d sudo rm -rf /var/log/mysql ​ # 5. 删除用户和组可选 sudo userdel mysql sudo groupdel mysql ​ # 6. 清理依赖 sudo yum autoremove -yUbuntu/Debian 系统# 1. 停止服务 sudo systemctl stop mysql ​ # 2. 卸载 MySQL sudo apt-get remove --purge mysql-server mysql-client mysql-common -y sudo apt-get autoremove -y sudo apt-get autoclean ​ # 3. 删除残留文件 sudo rm -rf /var/lib/mysql sudo rm -rf /etc/mysql sudo rm -rf /var/log/mysql ​ # 4. 检查是否清理彻底 dpkg -l | grep mysql # 如果有残留继续删除 sudo apt-get purge [包名]第二部分下载 MySQL 8.02.1 官方下载地址访问 MySQL 官方下载页面https://dev.mysql.com/downloads/mysql/选择适合你系统的版本Windows: 推荐下载mysql-installer-community-8.0.xx.msi在线安装器约 20MBLinux: 使用官方 Yum/APT 仓库或下载 RPM/DEB 包建议Windows 用户选择MySQL Installer方式图形化界面最不容易出错。第三部分安装 MySQL 8.0Windows 图形化安装3.1 运行安装程序双击下载的mysql-installer-community-8.0.xx.msi等待加载完成。3.2 选择安装类型推荐选择Server only仅安装数据库服务器推荐最小化安装Full安装所有组件包括 Workbench、Router 等约 1GBCustom自定义选择组件⚠️避坑如果只需要数据库服务选Server only即可避免安装不必要的组件导致冲突。3.3 检查依赖并下载安装器会自动检查系统依赖如 Visual C Redistributable如果有缺失会自动下载安装。点击Execute开始下载组件。3.4 执行安装下载完成后点击Execute安装 MySQL Server。第四部分配置 MySQL 8.0核心避坑区4.1 类型与网络配置Config Type: 选择Development Computer开发机器或Server Machine服务器Port: 默认3306如果之前安装过其他数据库占用可改为 3307Open Windows Firewall ports: ✅ 勾选允许远程连接4.2 认证方式选择重要这是 MySQL 8 最大的坑之一MySQL 8.0 默认使用caching_sha2_password认证插件而 MySQL 5.x 使用mysql_native_password。很多旧版客户端如 Navicat 旧版、某些 PHP 版本不支持新认证方式。选项 1Use Strong Password Encryption (RECOMMENDED)使用新的caching_sha2_password安全性更高但要求客户端支持如果你使用 MySQL Workbench 8、Navicat 15、DBeaver 等新版工具选这个选项 2Use Legacy Authentication Method使用旧的mysql_native_password兼容性更好适合旧项目迁移如果你不确定客户端版本或项目使用旧版 PHP/Java 驱动选这个建议如果是全新项目选Strong Password Encryption如果是迁移旧项目选Legacy Authentication避免连接问题。4.3 设置 Root 密码设置一个强密码至少 8 位包含大小写字母、数字和特殊字符。⚠️避坑务必记住这个密码MySQL 8 默认密码策略较严格简单密码可能无法通过。4.4 Windows 服务配置Windows Service Name: 默认MySQL80建议保持默认Start the MySQL Server at System Startup: ✅ 勾选开机自启Run Windows Service as: 选择Standard System Account4.5 执行配置点击Execute执行配置等待所有步骤显示绿色对勾。第五部分验证安装5.1 命令行验证打开 CMD 或 PowerShell输入mysql -u root -p输入密码后看到以下界面表示安装成功Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.40 MySQL Community Server - GPL ​ Copyright (c) 2000, 2024, Oracle and/or its affiliates. ​ Type help; or \h for help. Type \c to clear the current input statement. ​ mysql5.2 查看版本确认在 MySQL 命令行中输入SELECT VERSION();应返回类似8.0.40的版本号。5.3 使用 MySQL Workbench 连接打开 MySQL Workbench点击新建连接Connection Name: localhostHostname: 127.0.0.1Port: 3306Username: root点击Test Connection输入密码看到Connection Successful即表示成功。第六部分Linux 系统安装 MySQL 8.06.1 CentOS/RHEL 7/8# 1. 添加 MySQL 官方 Yum 仓库 sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm ​ # 2. 安装 MySQL 服务器 sudo yum install mysql-community-server -y ​ # 3. 启动并设置开机自启 sudo systemctl start mysqld sudo systemctl enable mysqld ​ # 4. 查看初始密码 sudo grep temporary password /var/log/mysqld.log # 输出类似2026-05-01T06:25:00.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for rootlocalhost: Abc9#defGh ​ # 5. 安全初始化修改密码、删除匿名用户等 sudo mysql_secure_installation6.2 Ubuntu 20.04/22.04# 1. 添加 MySQL APT 仓库 wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb # 在弹出的界面中选择 MySQL 8.0然后 OK # 2. 更新包列表 sudo apt-get update # 3. 安装 MySQL sudo apt-get install mysql-server -y # 4. 查看初始密码 sudo grep temporary password /var/log/mysql/error.log # 5. 运行安全脚本 sudo mysql_secure_installation6.3 Linux 修改 Root 密码# 如果忘记初始密码可以跳过授权表重置 sudo systemctl stop mysqld sudo mysqld_safe --skip-grant-tables mysql -u root # 在 MySQL 命令行中 FLUSH PRIVILEGES; ALTER USER rootlocalhost IDENTIFIED BY 你的新密码; EXIT; # 重启 MySQL sudo systemctl restart mysqld第七部分常见踩坑与解决方案❌ 坑 1安装时提示 MySQL Server 已存在原因旧版本未卸载干净注册表或残留文件冲突。解决重新执行第一部分的所有清理步骤使用 Geek Uninstaller 等工具强制卸载残留重启电脑后重新安装❌ 坑 2连接时提示 caching_sha2_password 认证失败原因客户端不支持 MySQL 8 的默认认证插件。解决-- 修改用户认证方式为旧版 ALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密码; FLUSH PRIVILEGES;❌ 坑 3安装后无法启动服务原因端口被占用或数据目录权限问题。解决# 检查端口占用Linux sudo netstat -tlnp | grep 3306 # 检查数据目录权限Linux sudo chown -R mysql:mysql /var/lib/mysql sudo chmod -R 755 /var/lib/mysql # 查看错误日志 sudo tail -f /var/log/mysqld.log❌ 坑 4远程连接被拒绝原因MySQL 8 默认只允许本地连接。解决-- 创建远程访问用户 CREATE USER root% IDENTIFIED BY 你的密码; GRANT ALL PRIVILEGES ON *.* TO root% WITH GRANT OPTION; FLUSH PRIVILEGES; -- 修改 bind-addressLinux -- 编辑 /etc/my.cnf在 [mysqld] 下添加 bind-address 0.0.0.0❌ 坑 5导入 MySQL 5 的 SQL 文件报错原因MySQL 8 默认字符集为utf8mb4且部分语法不兼容。解决-- 在导入前设置字符集 SET NAMES utf8mb4; -- 如果报错 Unknown collation: utf8mb4_0900_ai_ci -- 在导出时指定兼容的字符集 mysqldump --default-character-setutf8mb4 --compatiblemysql5.7 -u root -p 数据库名 backup.sql第八部分MySQL 8 新特性速览安装完成后你可以体验以下 MySQL 8 的强大新特性特性说明窗口函数ROW_NUMBER(),RANK(),LEAD(),LAG()等告别复杂子查询CTE公用表表达式WITH语句让 SQL 更易读JSON 增强JSON 表函数、聚合函数、改进的索引支持默认 utf8mb4原生支持 emoji 和完整 Unicode降序索引DESC索引优化排序查询不可见索引标记索引为不可见方便测试性能影响角色管理更方便的权限组管理总结从 MySQL 5 迁移到 MySQL 8彻底卸载旧版本是最关键的第一步。本文涵盖了✅ Windows/Linux 完整卸载流程含注册表/残留文件清理✅ MySQL 8.0 官方安装器图形化安装步骤✅ 认证方式选择避坑指南✅ Linux 命令行安装与配置✅ 5 大常见踩坑及解决方案按照本文步骤操作你可以顺利完成 MySQL 的升级迁移享受 MySQL 8 带来的性能提升和新特性附常用命令速查# 启动/停止/重启 MySQL net start MySQL80 # Windows net stop MySQL80 # Windows sudo systemctl start mysqld # Linux sudo systemctl stop mysqld # Linux # 登录 MySQL mysql -u root -p # 查看版本 mysql --version SELECT VERSION(); # 查看当前用户 SELECT USER(), CURRENT_USER(); # 查看所有数据库 SHOW DATABASES;