🚀 Ubuntu 上 MySQL 5.7 升级 MySQL 8 完整指南
在 Ubuntu 系统上将 MySQL 5.7 升级到 MySQL 8 是一个标准操作,但这个过程中会覆盖掉现有的 MySQL 5.7,所以务必谨慎操作。下面为你详细介绍升级步骤,还会提供一些常见问题解决方案哦😎。

⚠️ 第 0 步:备份你的数据库!(最重要!)
在执行任何操作之前,请务必备份现有的所有数据库,这可是你的"后悔药"💊。
bash
# 登录到你现有的 MySQL 5.7
mysql -u root -p
# 输入密码后,执行备份命令
# 这会导出所有数据库到一个 SQL 文件中
mysqldump -u root -p --all-databases > all_databases_backup_$(date +%F).sql
将生成的 all_databases_backup_YYYY-MM-DD.sql 文件下载到安全的地方📂。
📋 第 1 步:更新系统包列表
首先,确保包管理器知道最新的可用软件📦。
bash
sudo apt update
📂 第 2 步:添加 MySQL 官方 APT 仓库
Ubuntu 默认的软件源可能不包含最新的 MySQL 8,最可靠的方法是直接使用 MySQL 官方的 APT 仓库💻。
2.1 下载 MySQL APT 仓库配置包
bash
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb
注意:这个包的版本号可能会更新,如果链接失效,可以去 MySQL 官网 查找最新的 APT Config 包🔍。
2.2 安装配置包
bash
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
安装过程中,会弹出一个配置界面🖥️:
通常选择 Ok 即可,默认会启用 MySQL 8.0。如果你想选择其他版本,可以用方向键进入 MySQL Server & Cluster (Currently selected: mysql-8.0),然后选择你想要的版本。
选择好后,用 Tab 键移动到 Ok,回车确认。
2.3 再次更新 APT 包列表
这一步是为了让系统加载刚刚添加的 MySQL 8.0 的软件源📡。
bash
sudo apt update
💻 第 3 步:安装 MySQL 8.0
现在,你可以直接安装 MySQL 8.0 了。这个命令会自动卸载旧版本的 MySQL 并安装新版本🎉。
bash
sudo apt install mysql-server -y
在安装过程中,系统可能会提示你为 root 用户设置密码。请设置一个强密码并牢记它🔐。
🔒 第 4 步:运行安全配置脚本(非常重要)
安装完成后,MySQL 提供了一个安全脚本来帮助你进行一些基础的安全设置🛡️。
bash
sudo mysql_secure_installation
这个脚本会问你一系列问题,对于大多数生产环境,建议如下回答:
- VALIDATE PASSWORD COMPONENT (密码验证组件)
问你是否要设置密码强度策略。对于开发环境,可以输入 n 跳过。对于生产环境,建议输入 y 并选择强度等级(0-低, 1-中, 2-高)。 - Remove anonymous users? (移除匿名用户?)
输入 y。匿名用户有安全隐患🕵️。 - Disallow root login remotely? (禁止 root 远程登录?)
输入 y。这是最佳实践,可以防止暴力破解💥。 - Remove test database and access to it? (移除测试数据库?)
输入 y。测试数据库通常不需要🧪。 - Reload privilege tables now? (现在重新加载权限表吗?)
输入 y。让上面的设置立即生效💡。
✅ 第 5 步:验证安装和版本
5.1 检查 MySQL 服务状态
bash
sudo systemctl status mysql.service
你应该看到 active (running) 的绿色字样🟢。
5.2 检查 MySQL 版本
bash
mysql --version
或者登录 MySQL 查看:
bash
mysql -u root -p -e "SELECT VERSION();"
现在输出的版本号应该是 8.0.x 了🎉。
📥 第 6 步:恢复数据(如果需要)
如果你之前备份了数据,现在可以把它恢复回来💾。
bash
# 登录到你全新的 MySQL 8
mysql -u root -p
# 输入密码后,执行恢复命令
source /path/to/your/all_databases_backup_YYYY-MM-DD.sql;
恢复过程可能需要一些时间,请耐心等待⏳。
🔄 第 7 步:重启你的 Django 应用
现在数据库已经准备就绪,最后一步就是重启你的 uWSGI 服务,让 Django 重新连接到升级后的数据库🚀。
bash
# 根据你的 uWSGI 启动方式选择命令
sudo systemctl restart uwsgi.service
# 或者
sudo killall -9 uwsgi && /path/to/your/project/venv/bin/uwsgi --ini /path/to/your/project/uwsgi.ini
现在,你的 Django 应用应该就能成功连接到 MySQL 8.0,并且不会再报 NotSupportedError 的错误了🥳!
❓ 常见问题:升级后无法登录
MySQL 8 默认使用了新的认证插件 caching_sha2_password,一些旧的客户端工具可能不支持😣。如果你遇到登录问题,可以临时改回 mysql_native_password 认证方式:
sql
-- 登录 MySQL
mysql -u root -p
-- 执行以下命令,将 root 用户的认证方式改回来
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
-- 刷新权限
FLUSH PRIVILEGES;
这个操作对你的 Django 连接没有影响,因为 mysqlclient 库已经支持新的认证方式。这主要是为了方便你用一些旧的管理工具连接数据库🛠️。
Ending
希望这份指南能帮助你顺利完成 MySQL 5.7 到 MySQL 8 的升级🎉!如果在升级过程中遇到其他问题,欢迎在评论区留言交流哦💬。