# MySQL 8.4.x LTS部署维护参考手册Linux
北京致远互联软件股份有限公司
2026年6月
# 适用范围
本手册适用于使用 MySQL 8.4官方 Linux Generic 二进制包,手工完成 MySQL 8.4.x 的安装、配置、启动、验证、升级和卸载。
参考手册仅提供单机部署方案,如需MySQL高可用方案请自行寻找专业厂商支持
适用结果如下:
- 程序目录:
/usr/local/mysql - 数据目录:
/data/mysql - 配置文件:
/etc/my.cnf - 启动文件:
/etc/init.d/mysqld - 监听端口:
3306 - 默认 root 密码:
Seeyon123.
# 合规性
MySQL 提供社区版和商业版两条产品线。
- 社区版(Community Edition):采用 GPLv2 许可。
- 商业版(Enterprise Edition):需要单独购买许可。
本手册按社区版二进制包编写。正式项目落地前,需要确认所用版本和授权方式符合客户的合规要求。
# 前言
本手册提供 MySQL 8.4.x 二进制包的手工安装步骤。二进制包方案兼容性较好,目录清晰,后续维护也直接。
本文默认以 MySQL Community Server 为例。
# 环境准备
# 1. 系统要求
- 需要
root权限。 - 需要可用的
yum或dnf软件源。 - 需要确认当前机器架构与 MySQL 包匹配。
- 需要确认当前系统的 GLIBC 版本满足 MySQL 官方包要求。
# 2. 文件准备
下载地址:https://dev.mysql.com/downloads/mysql (opens new window)
- Select Version:选择8.4.x LTS版本
- Select Operating System:无论什么Linux系统都选择Linux - Generic
- Select OS Version:本演示系统是x86/64位/GLIBC 2.39,于是下载最接近的glibc2.28 x86 64-bit版本
通过uname -a命令来判断当前操作系统芯片和位数;通过ldd --version命令来看glibc版本,下载的安装包glibc尽量<=操作系统的glibc
最终下载的文件名格式如 mysql-8.4.x-*.tar.xz

# 3. 前置检查
安装前先确认以下内容:
/usr/local/mysql不存在。/data/mysql不存在,或者已经确认可以清空重建。3306端口未被其他服务占用。- 服务器磁盘空间足够。
检查命令如下:
id
ss -lntp | grep 3306
ls -ld /usr/local/mysql /data/mysql
uname -m
ldd --version | head -1
# 软件 / 权限 / 网络要求
# 1. 依赖包
先补齐基础依赖,再安装 MySQL 需要的运行库:
基于CentOS8+/RHEL8+/Fedora22+/欧拉openEuler/龙蜥Anolis等系统使用dnf安装
dnf install -y tar curl net-tools unzip vim telnet
基于CentOS7/RHEL7及更早体系的系统使用yum命令安装:
yum install -y tar curl net-tools unzip vim telnet
基于Debian的系统(如Ubuntu)使用apt预装组件:
sudo apt install tar net-tools unzip vim telnet -y
# 2. 安装 libaio
MySQL 官方二进制包依赖 libaio。不同发行版的安装方式不同。
Red Hat 系列:
yum -y install libaio perl perl-devel
Debian 系列(包括 Ubuntu):
sudo apt update
sudo apt install -y libaio1 perl
Ubuntu 24.04 和 22.04 的包名可能不同。如果 libaio1 不可用,先确认系统仓库里的实际包名,再安装对应版本。
# 3. Ubuntu 兼容
Ubuntu 以 systemd 为主,部分二进制包手工安装场景需要额外处理服务文件和运行库。
Ubuntu 上建议额外执行以下检查:
apt install -y numactl
ldconfig -p | grep libaio
如果系统中 libaio.so.1 不存在,但已经安装了 libaio1t64,可以按实际文件名建立兼容软链接。
cd /usr/lib/x86_64-linux-gnu/
ln -s libaio.so.1t64.0.2 libaio.so.1
ln -s libncurses.so.6.4 libncurses.so.6
# 4. 防火墙要求
如果需要远程连接 MySQL,必须放行 3306/tcp。
# 5. 账号要求
建议提前准备一个 root 登录会话,避免安装中途切换权限导致命令失败。
# 安装前 Linux 参数优化
生产环境建议检查以下参数:
ulimit -n不低于65535ulimit -u不低于65535SELINUX=disabled或已确认不会阻断 MySQL 启动
如果要调整持久配置,需要结合当前发行版的系统参数管理方式处理,本章节提供参考修改参考。
# 1. 调整文件句柄和进程数
先检查当前值:
ulimit -a
如果需要持久生效,编辑 /etc/security/limits.conf,追加以下内容:
# RedHat系列、CentOS、欧拉、麒麟等大部分系统使用的配置====start
# open files
* soft nofile 65535
* hard nofile 65535
# max user processes
* soft nproc 65535
* hard nproc 65535
# RedHat系列、CentOS、欧拉、麒麟等大部分系统使用的配置====end
# 如Debian和Ubuntu系统使用root用户,还需添加如下配置====start
# root user
root soft nofile 65535
root hard nofile 65535
root soft nproc 65535
root hard nproc 65535
# 如Debian和Ubuntu系统使用root用户,还需添加如上配置====end
修改后重启系统,再确认:
ulimit -n
ulimit -u
# 2. 关闭 SELinux
如果当前系统启用了 SELinux,建议先关闭,避免安装和启动阶段被拦截。
临时关闭:
setenforce 0
永久关闭:
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
修改后重启系统生效。
# 卸载 MariaDB
确保当前系统下没有MySQL,也没有MariaDB,如果有会影响MySQL安装。
# 1. 先确认是否已安装
systemctl status mariadb
rpm -qa | grep mariadb
dpkg -l | grep mariadb
# 2. Debian / Ubuntu 卸载
apt-get remove --purge mariadb-server mariadb-client -y
apt-get autoremove -y
apt-get autoclean
rm -rf /etc/mysql /var/lib/mysql
# 3. Red Hat 系列卸载
yum remove mariadb-server mariadb-client -y
rm -rf /etc/mysql /var/lib/mysql
# 4. 注意事项
- 先确认数据库不再需要。
- 卸载前最好先备份
/etc/mysql和/var/lib/mysql。 - 如果系统里还有依赖 MariaDB 的业务,不要直接清理。
# 部署步骤
# 1. 创建用户和用户组
先创建 mysql 用户和用户组:
groupadd mysql
useradd -g mysql -s /bin/false mysql
如果提示已存在,可以忽略重复创建错误。
# 2. 解压安装包
把安装包放到当前目录后,解压到 /usr/local:
tar -xvf mysql-8.4.x-linux-glibc2.x-x86_64.tar.xz -C /usr/local/
解压后确认目录名,例如 mysql-8.4.x-linux-glibc2.x-x86_64。
# 3. 创建软链接
将版本目录固定为 /usr/local/mysql,方便后续维护:
ln -sfn /usr/local/mysql-8.4.x-linux-glibc2.x-x86_64 /usr/local/mysql
readlink -f /usr/local/mysql
# 4. 创建数据目录
创建数据目录并授权:
mkdir -p /data/mysql
chown -R mysql:mysql /data/mysql
chmod 750 /data/mysql
# 5. 准备配置文件
在/etc下创建my.cnf文件,用于管理MySQL的配置:
vim /etc/my.cnf
将如下配置写入 /etc/my.cnf 文件中:
[client]
port=3306
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
port=3306
basedir=/usr/local/mysql/
datadir=/data/mysql
socket=/tmp/mysql.sock
pid-file=/data/mysql/seeyon.mysql.pid
# MySQL8.4需要临时关闭强制模式,否则seeyon产品安装会报错:Row size too large (> 8126)
# 安装升级seeyon后记得将此参数由OFF改为ON,否则使用久了可能有性能问题
innodb_strict_mode=OFF
log-output=FILE
general-log=0
general_log_file=/data/mysql/seeyon-mysql84-general.log
slow_query_log=1
slow_query_log_file=/data/mysql/seeyon-mysql84-slow.log
long_query_time=10
log-error=/data/mysql/seeyon-mysql84.err
authentication_policy=mysql_native_password
default-storage-engine=INNODB
character-set-server=utf8mb4
# 设置数据库开启的最大连接数
max_connections=1000
# 同一客户端连接尝试失败次数,超出次数即被冻结
max_connect_errors=100
transaction_isolation=READ-COMMITTED
max_allowed_packet=64M
default-time-zone='+8:00'
log_bin_trust_function_creators=1
log_timestamps=system
# seeyon环境必须大小写不敏感
lower_case_table_names=1
table_open_cache=2000
tmp_table_size=512M
key_buffer_size=512M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=16M
# *极其重要的数据库内存参数,一般建议将服务器可用物理内存的 50% 到 80% 分配给 innodb_buffer_pool_size
innodb_buffer_pool_size=8G
innodb_redo_log_capacity=2G
innodb_autoextend_increment=64
# 该参数值请根据innodb_buffer_pool_size大小来设置,4G以下不需要设置该参数
# 当innodb_buffer_pool_size在8G以上时可以设置为4;32G以上可以设置为8
innodb_buffer_pool_instances=4
innodb_open_files=300
innodb_file_per_table=1
# 生产环境建议开启binlog,可用于恢复数据库,降低数据丢失风险
# 以下配置默认保留7天,但注意如果磁盘空间不足,可能在突发大量数据变更操作后耗尽磁盘空间
# log_bin = mysql-bin
# expire_logs_days = 7
# max_binlog_size = 1024M
# binlog_format = ROW
# sync_binlog = 1
关于致远协同管理软件my.cnf配置,有几个关键信息需要配置:
1、数据引擎要求为InnoDB
2、MySQL8字符集要求为utf8mb4,早期MySQL版本可设置为utf8
3、要求不区分表/字段大小写 lower_case_table_names=1
4、MySQL8系列,时区默认为美国时区,中国用户若要正常使用,需修改mysql配置文件为default-time-zone='+8:00'
5、MySQL5.7或者以上版本,需要设置数据库日志时间匹配系统时区 log_timestamps=system
6、innodb_buffer_pool_size 参数是非常关键的性能指标,生产库建议按照服务器可用内存的50%-80%配置
7、MySQL8.4版本必须配置 innodb_strict_mode=OFF ,否则seeyon产品安装会报错:Row size too large (> 8126) ,seeyon安装完成后OFF设置为ON,避免后续性能问题
# 6. 初始化数据库
my.cnf参数配置完成后,给mysql用户授权相关权限:
chown mysql:mysql /etc/my.cnf
chmod 644 /etc/my.cnf
使用官方推荐的初始化方式生成临时密码:
/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/data/mysql --user=mysql --initialize
安装完成后,找到/etc/my.cnf中的log-error参数值,这个参数路径存放了日志,根据这个日志能找到mysql的初始化密码:
grep 'temporary password' /data/mysql/seeyon-mysql84.err
为什么要这么做:先让 MySQL 生成临时密码,再登录修改为项目统一密码,更接近官方安装流程。
拷贝类似如下图所示的这串字符串,这个就是初始化MySQL后生成的密码,做好备份,我们需要拿着它登录MySQL:

# 7. 配置启动文件
复制官方启动文件到系统启动目录:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -i 's|^basedir=.*|basedir=/usr/local/mysql|' /etc/init.d/mysqld
sed -i 's|^datadir=.*|datadir=/data/mysql|' /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# 8. 启动服务
# 启动服务命令
service mysqld start
# 如果确认mysql启动成功,可以通过如下命令设置mysql开机自启动
chkconfig mysqld on
如果系统使用 systemd,也可以先通过兼容方式启动,再检查 mysqld 是否在运行。
Ubuntu 上如果 service mysqld start 报 Unit mysqld.service not found,需要改用 systemd 服务文件。
cat >/etc/systemd/system/mysqld.service <<'EOF'
[Unit]
Description=MySQL Server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
ExecReload=/usr/local/mysql/support-files/mysql.server restart
User=mysql
Group=mysql
PIDFile=/data/mysql/seeyon.mysql.pid
[Install]
WantedBy=multi-user.target
EOF
以上完成后,通过systemd命令启动服务:
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld
# 9. 设置 root 密码
先使用初始化时生成的临时密码登录,再修改 root@localhost 密码,本示例修改密码为 Seeyon123. ,项目上可自行根据实际情况修改:
/usr/local/mysql/bin/mysql -uroot -p'临时密码' -h127.0.0.1 -P3306 -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Seeyon123.'; FLUSH PRIVILEGES;"
默认 root@localhost 账号仅允许本机访问,如需远程访问需再创建远程 root 账号并授权(密码自行调整):
/usr/local/mysql/bin/mysql -uroot -p'Seeyon123.' -h127.0.0.1 -P3306 -e "CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED BY 'Seeyon123.'; ALTER USER 'root'@'%' IDENTIFIED BY 'Seeyon123.'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;"
# 10. 创建应用账号和空库
部分客户不允许直接使用root账号,可参考如下命令创建seeyon服务自主维护的账号和数据库,示例如下:
/usr/local/mysql/bin/mysql -uroot -p'Seeyon123.' -h127.0.0.1 -P3306 -e "CREATE USER IF NOT EXISTS 'seeyon'@'%' IDENTIFIED BY 'oapwd654321'; GRANT ALL PRIVILEGES ON *.* TO 'seeyon'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; CREATE DATABASE IF NOT EXISTS SEEYONV5 DEFAULT CHARACTER SET UTF8MB4;"
# 11. 放行端口
如果启用了 firewalld:
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
如果启用了 iptables:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
service iptables save
# 验证
# 1. 检查进程
ps -ef | grep mysqld | grep -v grep
# 2. 检查端口
ss -lntp | grep 3306
# 3. 检查版本
/usr/local/mysql/bin/mysql -uroot -p'Seeyon123.' -h127.0.0.1 -P3306 -e "SELECT VERSION();"
如果使用临时密码登录失败,优先确认 temporary password 是否复制正确。
# 4. 检查账号
/usr/local/mysql/bin/mysql -uroot -p'Seeyon123.' -h127.0.0.1 -P3306 -e "SELECT user,host FROM mysql.user WHERE user='root';"
也可以顺手检查 seeyon 用户和 SEEYONV5 数据库是否创建成功。
/usr/local/mysql/bin/mysql -uroot -p'Seeyon123.' -h127.0.0.1 -P3306 -e "SELECT user,host FROM mysql.user WHERE user='seeyon'; SHOW DATABASES LIKE 'SEEYONV5';"
# 5. 检查目录
ls -ld /usr/local/mysql /data/mysql
# 日志检查
# 1. 错误日志
错误日志默认在:
/data/mysql/seeyon-mysql84.err
启动失败时,先看这里。
# 2. 慢日志
慢查询日志默认在:
/data/mysql/seeyon-mysql84-slow.log
# 3. 通用日志
通用查询日志默认在:
/data/mysql/seeyon-mysql84-general.log
# 日常运维
# 1. 启停服务
启动:
service mysqld start
停止:
service mysqld stop
重启:
service mysqld restart
# 2. 查看状态
service mysqld status
# 3. 备份数据
建议先做逻辑备份:
/usr/local/mysql/bin/mysqldump -uroot -p'Seeyon123.' -h127.0.0.1 -P3306 --all-databases --single-transaction --routines --triggers --events > /data/mysql/all_databases.sql
如果数据量较大,建议结合物理备份工具和停机窗口执行。
# 4. 查看连接数
/usr/local/mysql/bin/mysql -uroot -p'Seeyon123.' -h127.0.0.1 -P3306 -e "SHOW STATUS LIKE 'Threads_connected';"
# 5. 清理日志
定期检查 /data/mysql 下日志文件大小,避免磁盘被日志占满。
# 升级
# 1. 升级前提
- 先完成全量备份。
- 先阅读目标版本官方 Release Notes。
- 确认目标版本可以从当前版本直接升级。
- 确认数据目录已保留完整。
# 2. 升级步骤
- 停止 MySQL。
service mysqld stop
- 备份配置文件和启动文件。
cp /etc/my.cnf /root/my.cnf.$(date +%Y%m%d%H%M%S).bak
cp /etc/init.d/mysqld /root/mysqld.$(date +%Y%m%d%H%M%S).bak
- 解压新版本到
/usr/local。
tar -xvf mysql-8.4.z-linux-glibc2.x-x86_64.tar.xz -C /usr/local/
- 切换软链接到新版本目录。
ln -sfn /usr/local/mysql-8.4.z-linux-glibc2.x-x86_64 /usr/local/mysql
- 更新启动文件中的
basedir和datadir。
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
sed -i 's|^basedir=.*|basedir=/usr/local/mysql|' /etc/init.d/mysqld
sed -i 's|^datadir=.*|datadir=/data/mysql|' /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
- 启动 MySQL,触发版本升级流程。
service mysqld start
- 确认版本号。
/usr/local/mysql/bin/mysql -uroot -p'Seeyon123.' -h127.0.0.1 -P3306 -e "SELECT VERSION();"
# 卸载
# 1. 卸载前确认
- 确认需要保留还是删除
/data/mysql。 - 确认已有备份。
- 确认不再需要当前实例。
# 2. 卸载步骤
- 停止服务。
service mysqld stop
- 关闭开机自启。
chkconfig mysqld off
- 备份配置文件。
cp /etc/my.cnf /root/my.cnf.uninstall.$(date +%Y%m%d%H%M%S).bak
- 删除启动文件和软链接。
rm -f /etc/init.d/mysqld
rm -f /usr/local/mysql
- 删除程序目录。
rm -rf /usr/local/mysql-8.4.x-linux-glibc2.x-x86_64
rm -f /etc/my.cnf
- 按需删除数据目录。
rm -rf /data/mysql
- 删除用户和用户组。
userdel mysql
groupdel mysql
# 常见问题
# 1. MySQL 无法启动
现象:执行 service mysqld start 后进程没有起来。
处理:优先查看 /data/mysql/seeyon-mysql84.err,重点检查:
my.cnf路径是否正确。datadir权限是否为mysql:mysql。3306是否被占用。- 安装包架构是否正确。
# 2. root 无法登录
现象:密码设置后仍然登录失败。
处理:确认使用的是 root@localhost 的密码,并检查是否误用了错误的主机参数。
# 3. 远程访问失败
现象:本机可登录,远程不可登录。
处理:确认已经创建 root@'%',并检查防火墙是否放行 3306/tcp。
快速跳转