ubuntu linux 24.04安装绿色版mysql5.7

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

完成。

相关推荐
于眠牧北1 天前
MySQL的锁类型,表锁,行锁,MVCC中所使用的临键锁
mysql
Turnip12023 天前
深度解析:为什么简单的数据库"写操作"会在 MySQL 中卡住?
后端·mysql
加号34 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
シ風箏4 天前
MySQL【部署 04】Docker部署 MySQL8.0.32 版本(网盘镜像及启动命令分享)
数据库·mysql·docker
欧云服务器4 天前
怎么让脚本命令可以同时在centos、debian、ubuntu执行?
ubuntu·centos·debian
WeiXin_DZbishe4 天前
基于django在线音乐数据采集的设计与实现-计算机毕设 附源码 22647
javascript·spring boot·mysql·django·node.js·php·html5
智渊AI4 天前
Ubuntu 20.04/22.04 下通过 NVM 安装 Node.js 22(LTS 稳定版)
ubuntu·node.js·vim
爱可生开源社区4 天前
MySQL 性能优化:真正重要的变量
数据库·mysql
小马爱打代码4 天前
MySQL性能优化核心:InnoDB Buffer Pool 详解
数据库·mysql·性能优化
风流 少年4 天前
mysql mcp
数据库·mysql·adb