【超详细】Ubuntu 上 MySQL 5.7 升级 MySQL 8 完整指南

🚀 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 的升级🎉!如果在升级过程中遇到其他问题,欢迎在评论区留言交流哦💬。

相关推荐
寒水馨30 分钟前
Linux下载、安装protobuf-v35.1(附安装包protoc-35.1-linux-x86_64.zip)
linux·运维·服务器·google·序列化·protobuf·protoc
xqqxqxxq1 小时前
DML 表数据:插入、删除、修改
笔记·mysql
王琦03181 小时前
Linux的文件管理
linux·运维·服务器
Android系统攻城狮1 小时前
Linux PipeWire深度解析之pw_stream_new调用流程与实战(四十二)
linux·运维·服务器·音频进阶·pipewire音频进阶
蜉蝣fuyou1 小时前
VMware多版本安装包
linux·vmware·虚拟机
不会代码的小猴1 小时前
Linux note2
linux·笔记
雾里0不看花2 小时前
【App Service Linux】在Linux App Service中安装 tcpdump 并抓取网络包
linux·网络·tcpdump
xxwl5852 小时前
数据库后端接口测试报告
spring boot·mysql·tomcat
xqqxqxxq3 小时前
MySQL 数据类型笔记
数据库·笔记·mysql
Dawn-bit3 小时前
Linux日志处理三剑客之基础篇:(基础正则+扩展正则)
linux·运维·服务器·正则表达式·云计算·运维开发