在Linux系统中使用二进制包安装和升级MySQL5.7           

在Linux系统中使用二进制包安装和升级MySQL5.7

作者 hxwsq_华 于 2026-01-01 16:01:00.0 发表于 浙江    最近修改于 2026-03-06 18:01:57.0     本文浏览量:139人次

一、说明

1.1 操作系统版本

本文适用于以下操作系统(均为最小化安装系统):

【CentOS Linux 7】

cat /etc/centos-release

【Rocky Linux 9】

cat /etc/rocky-release

【openEuler 22.03】

cat /etc/openEuler-release

【openEuler 24.03】

cat /etc/openEuler-release

1.2 准备工作

1.2.1 系统中安装所需要的工具包

yum -y install wget rsync
rpm -q wget rsync

1.2.2 MySQL5.7二进制包官方下载

1.2.3 MySQL5.7.44二进制包备用下载

二、安装步骤

2.1 设置安装过程中的临时环境变量(本文以安装MySQL 5.7.42版本,安装在/usr/local目录为例)

export InstallVersion=5.7.42
export InstallDir=/usr/local

2.2 获取MySQL 5.7版本的二进制包,解压至安装目录并重命名为mysql

wget -P $PWD https://cdn.mysql.com/archives/mysql-5.7/mysql-$InstallVersion-linux-glibc2.12-x86_64.tar.gz
tar -zxf $PWD/mysql-$InstallVersion-linux-glibc2.12-x86_64.tar.gz -C $InstallDir
mv $InstallDir/mysql-$InstallVersion-linux-glibc2.12-x86_64 $InstallDir/mysql
ll $InstallDir/mysql

2.3 安装所需的依赖包

【CentOS Linux 7】
无需安装其他依赖包
【Rocky Linux 9】
dnf -y install epel-release
dnf -y install ncurses-compat-libs
rpm -q ncurses-compat-libs
【openEuler 22.03】 && 【openEuler 24.03】
dnf -y install ncurses-compat-libs
rpm -q ncurses-compat-libs

2.4 创建系统用户mysql

groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
id mysql

2.5 创建配置文件my.cnf

【基础配置,仅供参考】
cat > /etc/my.cnf << EOF 
[mysqld]
user=mysql
port=3306
basedir=$InstallDir/mysql
datadir=$InstallDir/mysql/data
pid-file=$InstallDir/mysql/data/mysqld.pid
log-error=$InstallDir/mysql/log/mysqld.log
skip-name-resolve
symbolic-links=0
lower_case_table_names=1
socket=/tmp/mysql.sock
[mysql]
socket=/tmp/mysql.sock
[client]
socket=/tmp/mysql.sock
EOF

2.6 创建MySQL数据目录和日志目录,并配置MySQL环境变量

mkdir -p $InstallDir/mysql/{data,log}
chown -R mysql:mysql $InstallDir/mysql
ll $InstallDir/mysql

echo "export PATH=$InstallDir/mysql/bin:\$PATH" >> /etc/profile
source /etc/profile

2.7 初始化MySQL数据库并获取临时密码

mysqld --user=mysql --basedir=$InstallDir/mysql --datadir=$InstallDir/mysql/data --initialize
cat $InstallDir/mysql/log/mysqld.log | grep 'temporary password'

【初始化时如果加上initialize-insecure参数可以不生成临时密码,首次登录MySQL数据库时无需输入密码】
mysqld --user=mysql --basedir=$InstallDir/mysql --datadir=$InstallDir/mysql/data --initialize-insecure

2.7 配置MySQL数据库开机自启动

cat > /etc/systemd/system/mysqld.service << EOF
[Unit]
Description=MySQL Server
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=$InstallDir/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE=65536
LimitNPROC=65536
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now mysqld.service
systemctl status mysqld.service

2.8 使用临时密码登录MySQL数据库并更新管理员密码

【密码可自定义】
mysql> alter user 'root'@'localhost' identified by '123456';

三、升级步骤

3.1 设置升级过程中的临时环境变量

【MySQL 5.7版本官方已停止维护,最新版本停留在MySQL 5.7.44】
export UpgradeVersion=5.7.44
export InstallDir=/usr/local

3.2 停止运行的MySQL数据库,并做好数据备份

systemctl stop mysqld
systemctl status mysqld

【做好数据备份,以便出现问题时可以及时回退】
cp -r $InstallDir/mysql $InstallDir/mysql_$(date +%Y%m%d)

3.3 获取MySQL 5.7版本最新的二进制包并解压

wget -P $PWD https://cdn.mysql.com/archives/mysql-5.7/mysql-$UpgradeVersion-linux-glibc2.12-x86_64.tar.gz
tar -zxf $PWD/mysql-$UpgradeVersion-linux-glibc2.12-x86_64.tar.gz

3.4 使用新版本的文件替换旧版本的文件

【推荐】使用rsync工具进行文件的更新和替换
rsync -a $PWD/mysql-$UpgradeVersion-linux-glibc2.12-x86_64/ $InstallDir/mysql/
chown -R mysql:mysql $InstallDir/mysql

【如果系统中无法安装rsync,也可以使用cp命令】
/bin/cp -rf  $PWD/mysql-$UpgradeVersion-linux-glibc2.12-x86_64/* $InstallDir/mysql/
chown -R mysql:mysql $InstallDir/mysql

3.5 启动MySQL数据库并进行更新检查

systemctl start mysqld

mysql_upgrade -uroot -p --force --skip-version-check -S /tmp/mysql.sock

3.6 检查升级后的版本并进行登录测试

mysql -V
mysql> select version();

3.7 版本回退

【如果升级出现问题,可通过备份进行版本回退】
export InstallDir=/usr/local
# 停止运行的MySQL数据库
systemctl stop mysqld
# 删除升级后的目录,并还原备份的目录
rm -rf $InstallDir/mysql && mv $InstallDir/mysql_$(date +%Y%m%d) $InstallDir/mysql
# 还原后的目录重新授权
chown -R mysql:mysql $InstallDir/mysql
# 启动MySQL数据库
systemctl start mysqld
# 检查回退后的版本并进行登录测试
mysql -V
mysql> select version();

本站声明

本站所有文章均由作者(hxwsq_华)个人整理和发布,仅供学习和参考,严禁任何形式的复制和转载!
如有疑问,请点击此处给作者发邮件,谢谢!