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

完成。

相关推荐
Zzzzmo_6 小时前
【MySQL】JDBC(含settings.xml文件配置/配置国内镜像以及pom.xml文件修改)
数据库·mysql
FirstFrost --sy7 小时前
MySQL内置函数
数据库·mysql
eggwyw8 小时前
MySQL-练习-数据汇总-CASE WHEN
数据库·mysql
bing_feilong10 小时前
Mid360(2):运行livox_ros_driver2的demo失败
ubuntu·机器人
mygljx10 小时前
MySQL 数据库连接池爆满问题排查与解决
android·数据库·mysql
Bdygsl11 小时前
MySQL(1)—— 基本概念和操作
数据库·mysql
身如柳絮随风扬12 小时前
什么是左匹配规则?
数据库·sql·mysql
jiankeljx12 小时前
mysql之如何获知版本
数据库·mysql
小李来了!13 小时前
数据库DDL、DML、DQL、DCL详解
数据库·mysql
我科绝伦(Huanhuan Zhou)13 小时前
【生产案例】MySQL InnoDB 数据损坏崩溃修复
数据库·mysql·adb