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

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

作者 hxwsq_华 于 2026-01-27 19:57:00.0 发表于 浙江    最近修改于 2026-01-27 20:00:07.0     本文浏览量:6人次

一、说明

1.1 操作系统版本

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

【CentOS Linux 7】:安装glibc 2.17版本的MySQL

cat /etc/centos-release
ldd --version

【Rocky Linux 9】:推荐安装glibc 2.28版本的MySQL,也可以安装glibc 2.17版本的MySQL

cat /etc/rocky-release
ldd --version

【openEuler 22.03】:推荐安装glibc 2.28版本的MySQL,也可以安装glibc 2.17版本的MySQL

cat /etc/openEuler-release
ldd --version

【openEuler 24.03】:推荐安装glibc 2.28版本的MySQL,也可以安装glibc 2.17版本的MySQL

cat /etc/openEuler-release
ldd --version

1.2 准备工作

【MySQL8.0二进制包历史版本官方下载】

【MySQL8.0二进制包最新版本官方下载】

【MySQL8.0二进制包最新版本备用下载】

二、安装步骤

2.1 获取MySQL 8.0版本的二进制包(本文以安装MySQL 8.0.43版本为例),解压至安装目录(本文以/usr/local目录为例)并重命名为mysql

export GlibcVersion=glibc2.17
export InstallVersion=8.0.43
export InstallDir=/usr/local
wget -P $PWD https://cdn.mysql.com/archives/mysql-8.0/mysql-$InstallVersion-linux-$GlibcVersion-x86_64.tar.xz
tar -xf $PWD/mysql-$InstallVersion-linux-$GlibcVersion-x86_64.tar.xz -C $InstallDir
mv $InstallDir/mysql-$InstallVersion-linux-$GlibcVersion-x86_64 $InstallDir/mysql
ll $InstallDir/mysql

2.2 安装所需的依赖包

【CentOS Linux 7】
无需安装其他依赖包
【Rocky Linux 9】 && 【openEuler 22.03】 && 【openEuler 24.03】
# 如果使用的是glibc 2.28版本的安装包,则无需安装其他依赖包
# 如果使用的是glibc 2.17版本的安装包,则需要安装ncurses-compat-libs包
【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.3 创建系统用户mysql

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

2.4 创建配置文件my.cnf

【基础配置,仅供参考】
cat << EOF > /etc/my.cnf
[mysqld]
user=mysql
port=3306
basedir=$InstallDir/mysql
datadir=$InstallDir/mysql/data
log-error=$InstallDir/mysql/log/mysqld.log
pid-file=$InstallDir/mysql/mysqld.pid
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.5 创建MySQL数据目录和日志目录,并初始化MySQL数据库

mkdir -p $InstallDir/mysql/{data,log}
chown -R mysql:mysql $InstallDir/mysql
ll $InstallDir/mysql
【加上initialize-insecure参数表示不生成临时密码,首次登录MySQL数据库时无需输入密码】
cd $InstallDir/mysql/bin/ && ./mysqld --user=mysql --basedir=$InstallDir/mysql --datadir=$InstallDir/mysql/data --initialize-insecure
【不加initialize-insecure参数,初始化后会在mysqld.log文件中生成临时密码用于首次登录MySQL】
cd $InstallDir/mysql/bin/ && ./mysqld --user=mysql --basedir=$InstallDir/mysql --datadir=$InstallDir/mysql/data --initialize
cat $InstallDir/mysql/log/mysqld.log | grep 'temporary password'

2.6 配置MySQL环境变量并配置开机自启动

echo "export PATH=$InstallDir/mysql/bin:\$PATH" >> /etc/profile
source /etc/profile
cat << EOF > /etc/systemd/system/mysqld.service
[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.7 配置MySQL数据库的管理员密码

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

三、升级步骤

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

systemctl stop mysqld
systemctl status mysqld
【做好数据备份,以便出现问题时可以及时回退】
export InstallDir=/usr/local
cp -r $InstallDir/mysql $InstallDir/mysql.bak$(date +%Y%m%d)

3.2 获取MySQL 8.0版本最新的二进制包并解压

【升级版本时,glibc版本需与旧版MySQL一致】
export GlibcVersion=glibc2.17
export LatestVersion=8.0.44
wget -P $PWD https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-$LatestVersion-linux-$GlibcVersion-x86_64.tar.xz
tar -xf $PWD/mysql-$LatestVersion-linux-$GlibcVersion-x86_64.tar.xz

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

【推荐】使用rsync工具进行文件的更新和替换
rsync -av $PWD/mysql-$LatestVersion-linux-$GlibcVersion-x86_64/ $InstallDir/mysql/
【如果系统中无法安装rsync,也可以使用cp命令】
/bin/cp -rf  $PWD/mysql-$LatestVersion-linux-$GlibcVersion-x86_64/* $InstallDir/mysql/
chown -R mysql:mysql $InstallDir/mysql

3.4 启动MySQL数据库并检查升级后的版本

systemctl start mysqld
systemctl status mysqld
mysql -V
mysql> select version();

3.5 版本回退

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

本站声明

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