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

完成。

相关推荐
酸菜牛肉汤面2 小时前
17、什么是脏读?幻读?不可重复读?
java·数据库·mysql
ClouGence2 小时前
数据实时迁移同步工具 CloudCanal-v5.3.1.0 发布,支持金仓数据库
大数据·数据库·mysql·数据分析·dba
老兵发新帖2 小时前
open-notebook开源项目分析
linux·运维·ubuntu
cookqq2 小时前
踩坑记:MySQL 连接 URL 缺失useCursorFetch参数引发的 Java 内存溢出惨案
java·mysql
莳花微语3 小时前
记录一次生产中mysql主备延迟问题处理
数据库·mysql
阿拉伯柠檬3 小时前
MySQL内置函数(二)
linux·数据库·mysql·面试
杜子不疼.3 小时前
从 0 到 1:基于 Spring Boot 4 + Redis + MySQL 构建高可用电商后端系统
spring boot·redis·mysql
小蜗牛的路3 小时前
MySQL-连接很慢,10秒钟才有响应、Temporary failure in name resolution
数据库·mysql
程序猿_极客4 小时前
【node期末作业开发】Node.js+MySQL 实现销售信息管理系统的增删改查(附源码)
数据库·mysql·node.js