MySQL 5 卸载到 MySQL 8 安装完整指南(不踩坑版)

前言

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 已存在"

原因:旧版本未卸载干净,注册表或残留文件冲突。

解决

  1. 重新执行第一部分的所有清理步骤

  2. 使用 Geek Uninstaller 等工具强制卸载残留

  3. 重启电脑后重新安装

❌ 坑 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,彻底卸载旧版本是最关键的第一步。本文涵盖了:

  1. ✅ Windows/Linux 完整卸载流程(含注册表/残留文件清理)

  2. ✅ MySQL 8.0 官方安装器图形化安装步骤

  3. ✅ 认证方式选择避坑指南

  4. ✅ Linux 命令行安装与配置

  5. ✅ 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;
相关推荐
灰阳阳1 小时前
MySQL的基本架构
数据库·mysql·架构
@小柯555m2 小时前
MySql(高级操作符--Where in 和Not in)
数据库·sql·mysql
许彰午2 小时前
CacheSQL(一):手写数据库的工程化重生
java·数据库·缓存
MmeD UCIZ2 小时前
MySQL单表存多大的数据量比较合适
数据库·mysql
SarL EMEN2 小时前
mysql之联合索引
数据库·mysql
l1t2 小时前
DeepSeek总结的DuckDB anofox-forecast季节调整时间序列预测插件功能
开发语言·数据库
meta INGU2 小时前
mysql数据被误删的恢复方案
数据库·mysql
27669582922 小时前
acw_sc__v2
数据库·acw_sc__v2·acw_sc__v2逆向·acw_sc__v2算法分析·acw_sc__v2分析·acw_sc__v2还原·acw_sc__v2-ck
Empty-Filled2 小时前
Claude Gateway 排查教程
网络·数据库·人工智能