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

完成。

相关推荐
JZC_xiaozhong2 分钟前
电商ERP如何同步订单数据到MySQL?集成方案解析
数据库·mysql·数据分析·etl工程师·嵌入式实时数据库·电商erp集成·数据集成与应用集成
持戒波罗蜜1 小时前
ubuntu20解决intel wifi 驱动问题
linux·驱动开发·嵌入式硬件·ubuntu
-大头.2 小时前
Docker实战:构建高性能MySQL主从复制集群(读写分离)
mysql·docker·容器
${王小剑}2 小时前
在离线ubuntu上布置深度学习环境
linux·运维·ubuntu
burning_maple2 小时前
mysql数据库笔记
数据库·笔记·mysql
周某人姓周3 小时前
sqlilabs靶场通关详解
数据库·mysql·安全·网络安全
霖霖总总4 小时前
[小技巧41]InnoDB 如何判断一行数据是否可见?MVCC 可见性机制深度解析
数据库·mysql
Mr.徐大人ゞ6 小时前
生产可用的 MySQL8 一键安装脚本和一键巡检脚本
mysql
星梦清河6 小时前
MySQL—分组函数
数据库·mysql
Black__Jacket7 小时前
Ubuntu下,/dev下,无法读取到CH340串口芯片的端口号
linux·运维·ubuntu