前言
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;
以上就是mysql5卸载到mysql8安装的不踩坑指南的详细内容,更多关于mysql5卸载到mysql8安装的资料请关注代码网其它相关文章!
发表评论