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

相关推荐
Java.熵减码农18 小时前
解决Linux修改环境变量后导致登录循环进不去系统的问题
linux·运维·服务器
天骄t18 小时前
嵌入式系统与51单片机核心原理
linux·单片机·51单片机
阿部多瑞 ABU19 小时前
`chenmo` —— 可编程元叙事引擎 V2.3+
linux·人工智能·python·ai写作
徐同保19 小时前
nginx转发,指向一个可以正常访问的网站
linux·服务器·nginx
HIT_Weston19 小时前
95、【Ubuntu】【Hugo】搭建私人博客:_default&partials
linux·运维·ubuntu
实心儿儿20 小时前
Linux —— 基础开发工具5
linux·运维·算法
oMcLin20 小时前
如何在SUSE Linux Enterprise Server 15 SP4上通过配置并优化ZFS存储池,提升文件存储与数据备份的效率?
java·linux·运维
论迹20 小时前
【Git】-- Git安装 & 卸载(ubuntu)
git·ubuntu·elasticsearch
刀法如飞21 小时前
开箱即用的 DDD(领域驱动设计)工程脚手架,基于 Spring Boot 4.0.1 和 Java 21
java·spring boot·mysql·spring·设计模式·intellij-idea
zbguolei21 小时前
MySQL根据身份证号码计算出生日期和年龄
数据库·mysql