前言
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 -y
Ubuntu/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.0
2.1 官方下载地址
访问 MySQL 官方下载页面:https://dev.mysql.com/downloads/mysql/
选择适合你系统的版本:
-
Windows : 推荐下载
mysql-installer-community-8.0.xx.msi(在线安装器,约 20MB) -
Linux: 使用官方 Yum/APT 仓库或下载 RPM/DEB 包
💡 建议 :Windows 用户选择 MySQL Installer 方式,图形化界面最不容易出错。
第三部分:安装 MySQL 8.0(Windows 图形化安装)
3.1 运行安装程序
双击下载的 mysql-installer-community-8.0.xx.msi,等待加载完成。
3.2 选择安装类型

推荐选择:
-
Server only:仅安装数据库服务器(推荐,最小化安装)
-
Full:安装所有组件(包括 Workbench、Router 等,约 1GB)
-
Custom:自定义选择组件
⚠️ 避坑 :如果只需要数据库服务,选 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,如果之前安装过其他数据库占用,可改为 3307
-
Open Windows Firewall ports: ✅ 勾选,允许远程连接
4.2 认证方式选择(重要!)

这是 MySQL 8 最大的坑之一!
MySQL 8.0 默认使用 caching_sha2_password 认证插件,而 MySQL 5.x 使用 mysql_native_password。很多旧版客户端(如 Navicat 旧版、某些 PHP 版本)不支持新认证方式。
-
选项 1:Use Strong Password Encryption (RECOMMENDED)
-
使用新的
caching_sha2_password -
安全性更高,但要求客户端支持
-
如果你使用 MySQL Workbench 8+、Navicat 15+、DBeaver 等新版工具,选这个
-
-
选项 2:Use 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 Account

4.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.
mysql>
5.2 查看版本确认
在 MySQL 命令行中输入:
SELECT VERSION();
应返回类似 8.0.40 的版本号。
5.3 使用 MySQL Workbench 连接

打开 MySQL Workbench,点击 + 新建连接:
-
Connection Name: localhost
-
Hostname: 127.0.0.1
-
Port: 3306
-
Username: root
点击 Test Connection ,输入密码,看到 Connection Successful 即表示成功。

第六部分:Linux 系统安装 MySQL 8.0
6.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 root@localhost: Abc9#defGh
# 5. 安全初始化(修改密码、删除匿名用户等)
sudo mysql_secure_installation
6.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_installation
6.3 Linux 修改 Root 密码
# 如果忘记初始密码,可以跳过授权表重置
sudo systemctl stop mysqld
sudo mysqld_safe --skip-grant-tables &
mysql -u root
# 在 MySQL 命令行中
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
EXIT;
# 重启 MySQL
sudo systemctl restart mysqld
第七部分:常见踩坑与解决方案
❌ 坑 1:安装时提示 "MySQL Server 已存在"
原因:旧版本未卸载干净,注册表或残留文件冲突。
解决:
-
重新执行第一部分的所有清理步骤
-
使用 Geek Uninstaller 等工具强制卸载残留
-
重启电脑后重新安装
❌ 坑 2:连接时提示 "caching_sha2_password 认证失败"
原因:客户端不支持 MySQL 8 的默认认证插件。
解决:
-- 修改用户认证方式为旧版
ALTER USER 'root'@'localhost' 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-address(Linux)
-- 编辑 /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-set=utf8mb4 --compatible=mysql5.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;