Ubuntu 24.04 作为新版系统,移除了很多 MySQL 5.7 依赖的老旧库,比如libaio1、libnuma1、libncurses5等,直接采用 apt install libaio1 这样的命令是安装不上的,所以某些库需要使用20.04的源来下载,话不多说,开始。
当前系统:

1.Ubuntu 24.04的源配置
Ubuntu 24.04的源配置文件现在是:/etc/apt/sources.list.d/ubuntu.sources 而不再是 /etc/apt/sources.list. 这里要说一下Ubuntu源配置的核心规则:
Ubuntu 从 22.04 开始逐步推广 Deb822 格式(.sources 文件),并将其作为默认配置,但为了兼容旧版:
/etc/apt/sources.list:仍有效,系统会优先读取但不覆盖 .sources 文件;
/etc/apt/sources.list.d/:
- 旧格式 .list 文件(如 tsinghua.list):仍会被加载;
- 新格式 .sources 文件(如 ubuntu.sources):官方默认推荐,优先级与 .list 一致;
最终生效的源 = sources.list + sources.list.d/ 下所有 .list + .sources 文件的合集。

为安装mysql5.7的库,两个源配置文件分别为以下内容:
/etc/apt/sources.list.d/ubuntu.sources源配置(此处使用阿里云源)
bash
Types: deb
URIs: http://mirrors.aliyun.com/ubuntu/
Suites: noble noble-updates noble-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg
/etc/apt/sources.list源配置:
bash
# 新增Ubuntu 20.04 focal源(仅用于安装老旧库,安装完mysql5.7后可以注释掉改为全部使用新源)
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
然后更新源配置文件:
bash
sudo apt update
2.安装mysql5.7依赖库
bash
# 更新源并安装基础依赖
sudo apt update && sudo apt install -y libaio1 libnuma1 net-tools lsof
# 验证库文件是否存在
ls -l /usr/lib/x86_64-linux-gnu/libaio.so.1
ls -l /usr/lib/x86_64-linux-gnu/libnuma.so.1

bash
# 安装libncurses5(指定从focal源获取,即刚才在/etc/apt/sources.list中配置的22.04的源)
sudo apt install -y libncurses5/focal
# 创建软链接(确保系统能识别libncurses.so.5)
sudo ln -sf /usr/lib/x86_64-linux-gnu/libncurses.so.5 /usr/lib/x86_64-linux-gnu/libncurses.so
sudo ln -sf /usr/lib/x86_64-linux-gnu/libncursesw.so.5 /usr/lib/x86_64-linux-gnu/libncursesw.so
# 验证库文件是否存在
ls -l /usr/lib/x86_64-linux-gnu/libncurses.so.5
以上安装库文件的关键步骤已经完成,可以进行绿色版mysql5.7的安装了,可自行进行安装,下面的mysql5.7安装仅供参考:
3.安装绿色版mysql5.7
bash
# 我的mysql5.7安装在/data目录下
cd /data
# 下载二进制包
wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
# 解压包
tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz
# 将文件夹名重命名
mv mysql-5.7.44-linux-glibc2.12-x86_64 mysql5.7.44
# 创建并编辑mysql配置文件,内容在下一个代码块.
touch /data/mysql5.7.44/my.cnf
my.cnf内容:
bash
[mysqld]
# 基础路径配置
basedir = /data/mysql5.7.44
datadir = /data/mysql5.7.44/data
socket = /tmp/mysql.sock
pid-file = /data/mysql5.7.44/tmp/mysql.pid
user = mysql
port = 3306
server-id = 1
# 字符集(避免乱码)
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
skip-name-resolve = 1 # 关闭DNS解析,提升连接速度
# 日志配置(排障关键)
log-error = /data/mysql5.7.44/log/mysqld.log
slow_query_log = 1
slow_query_log_file = /data/mysql5.7.44/log/slow.log
long_query_time = 2
log_bin = /data/mysql5.7.44/log/mysql-bin
binlog_format = row
# 性能配置(根据内存调整:8G内存设4G,16G设8G)
innodb_buffer_pool_size = 2G
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
max_connections = 1000
wait_timeout = 600
[mysql]
default-character-set = utf8mb4
socket = /tmp/mysql.sock
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4
继续执行命令:
bash
# 1. 创建mysql系统用户(无登录权限,仅运行MySQL)
useradd -r -s /sbin/nologin mysql
# 2. 创建数据/日志/临时目录(数据目录独立存放,避免安装目录占满)
mkdir -p /data/mysql5.7.44/data
mkdir -p /data/mysql5.7.44/log
mkdir -p /data/mysql5.7.44/tmp
# 3. 授权所有MySQL相关目录给mysql用户(关键!否则初始化/启动会报权限错误)
chown -R mysql:mysql /data/mysql5.7.44/
chmod -R 755 /data/mysql5.7.44/
#初始化数据库
cd /data/mysql5.7.44/bin
sudo ./mysqld --initialize --user=mysql --basedir=/data/mysql5.7.44 --datadir=/data/mysql5.7.44/data
# 输入log中包含临时密码

临时启动(测试用,使用mysqld_safe启动)
bash
# 启动MySQL
sudo /data/mysql5.7.44/bin/mysqld_safe --defaults-file=/data/mysql5.7.44/my.cnf &
启动报:缺少/data/mysql5.7.44/log/mysqld.log文件的错误,补充上,别忘了赋权
bash
cd /data/mysql5.7.44/log/
touch mysqld.log
chown mysql:mysql mysqld.log
chmod 755 mysqld.log
再次启动即可:
使用上面的临时密码登录mysql,修改密码等操作:
进入bin目录
bash
cd /data/mysql5.7.44/bin#
# 使用临时密码登录mysql
./mysql -uroot -p
# 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'esd123$%^';
# 允许非localhost用户连接此数据库
use mysql;
update user set Host = '%' where User = 'root';
flush privileges;
4.将mysql注册成服务
bash
sudo vim /etc/systemd/system/mysqld.service
粘贴以下内容:
bash
[Unit]
Description=MySQL 5.7 Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/data/mysql5.7.44/bin/mysqld --defaults-file=/data/mysql5.7.44/my.cnf
LimitNOFILE=65535
LimitNPROC=65535
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
保存退出后,执行:
bash
# 1. 重载systemd配置
sudo systemctl daemon-reload
# 2. 启动并设置开机自启
sudo systemctl start mysqld
sudo systemctl enable mysqld
# 3. 检查启动状态
sudo systemctl status mysqld
# 输出「active (running)」表示启动成功

5.配置永久环境变量以便在命令行使用mysql命令(可选)
bash
# 编辑bashrc
sudo vim ~/.bashrc
# 添加一行
export PATH=$PATH:/data/mysql5.7.44/bin
# 生效配置
source ~/.bashrc
完成。