CentOS7 离线一键安装 MySQL 8.0
CentOS7 离线一键安装 MySQL 8.0
在很多生产环境里,服务器往往是无网络环境的,这时候要安装 MySQL 就只能依靠离线包了。本文记录了我在 CentOS7 环境下离线安装 MySQL 8.0 的全过程,并附带了 一键安装脚本 和 卸载脚本,开箱即用,非常适合日常运维场景。
1. 前置准备(离线包收集)
首先,我们需要准备好所有的安装包和依赖,统一放到 /data/install_mysql
目录下。
1.1 MySQL 离线包下载
下载地址:
👉 MySQL 官方存档地址
我这里使用的版本是:
mysql-8.0.43-1.el7.x86_64.rpm-bundle.tar
解压后只需要下面几个包,把它们放到 /data/install_mysql/mysql_rpms
:
mysql-community-client-8.0.43-1.el7.x86_64.rpm
mysql-community-common-8.0.43-1.el7.x86_64.rpm
mysql-community-libs-8.0.43-1.el7.x86_64.rpm
mysql-community-server-8.0.43-1.el7.x86_64.rpm
mysql-community-client-plugins-8.0.43-1.el7.x86_64.rpm
mysql-community-icu-data-files-8.0.43-1.el7.x86_64.rpm
mysql-community-libs-compat-8.0.43-1.el7.x86_64.rpm
1.2 依赖包下载(Perl 和 Net-Tools)
在有网络的 CentOS7 机器上执行以下步骤:
yum install -y yum-utils
如果拉不到,可以切换到国内镜像源:
cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all && yum makecache
下载 Perl 依赖包:
mkdir -p /data/install_mysql/perl_rpms
cd /data/install_mysql/perl_rpms
yumdownloader --resolve perl
下载 Net-Tools 依赖包:
mkdir -p /data/install_mysql/net_tools_rpms
cd /data/install_mysql/net_tools_rpms
yumdownloader --resolve net-tools
此时 /data/install_mysql
目录下应该有三个文件夹:
mysql_rpms
→ MySQL 主安装包perl_rpms
→ Perl 依赖包net_tools_rpms
→ Net-Tools 依赖包
2. 一键安装脚本
在 /data/install_mysql
下创建 install_mysql.sh
,内容如下:
#!/bin/bash
set -e# rpm 包目录
RPM_BASE="/data/install_mysql"
MYSQL_RPMS="$RPM_BASE/mysql_rpms"
PERL_RPMS="$RPM_BASE/perl_rpms"
NET_TOOLS_RPMS="$RPM_BASE/net_tools_rpms"# MySQL 数据存放位置
DATA_DIR="/data/tools/mysql"echo ">>> 开始安装 MySQL..."# 1. 卸载 mariadb-libs
rpm -qa | grep mariadb-libs && rpm -e --nodeps mariadb-libs || true# 2. 安装依赖
rpm -ivh --force --nodeps $PERL_RPMS/*.rpm || true
rpm -ivh --force --nodeps $NET_TOOLS_RPMS/*.rpm || true# 3. 安装 MySQL rpm
rpm -ivh --force --nodeps \$MYSQL_RPMS/mysql-community-common-8.0.*.rpm \$MYSQL_RPMS/mysql-community-client-plugins-8.0.*.rpm \$MYSQL_RPMS/mysql-community-libs-8.0.*.rpm \$MYSQL_RPMS/mysql-community-libs-compat-8.0.*.rpm \$MYSQL_RPMS/mysql-community-icu-data-files-8.0.*.rpm \$MYSQL_RPMS/mysql-community-client-8.0.*.rpm \$MYSQL_RPMS/mysql-community-server-8.0.*.rpm# 4. 准备数据目录
mkdir -p $DATA_DIR
chown -R mysql:mysql $DATA_DIR# 5. 修改 my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
datadir=$DATA_DIR
socket=$DATA_DIR/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid[client]
socket=$DATA_DIR/mysql.sock
EOF# 6. 初始化 & 启动 MySQL
systemctl daemon-reexec
systemctl enable mysqld
systemctl start mysqld# 7. 获取临时密码
TEMP_PASS=$(grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}')
NEW_PASS="Aa@123456"echo ">>> 临时密码: $TEMP_PASS"# 8. 设置 root 密码 & 开放远程
mysql -uroot -p"$TEMP_PASS" --connect-expired-password <<EOF
ALTER USER 'root'@'localhost' IDENTIFIED BY '$NEW_PASS';
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED WITH mysql_native_password BY '$NEW_PASS';
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EOFecho ">>> MySQL 安装完成!"
echo ">>> 数据目录: $DATA_DIR"
echo ">>> 账号: root"
echo ">>> 密码: $NEW_PASS"
执行安装:
cd /data/install_mysql
sh install_mysql.sh
3. 验证安装
查看运行状态:
systemctl status mysqld
登录 MySQL:
mysql -uroot -pAa@123456
能正常进入,就说明安装成功。
4. 一键卸载脚本
如果安装失败或者想重新部署,可以用下面的一键卸载脚本 uninstall_mysql.sh
:
#!/bin/bash
set -e
DATA_DIR="/data/tools/mysql"echo ">>> 停止 MySQL 服务..."
systemctl stop mysqld || true
systemctl disable mysqld || trueecho ">>> 卸载 MySQL 相关 rpm..."
rpm -qa | grep -i mysql-community | xargs -r rpm -e --nodeps
rpm -qa | grep -i mysql | xargs -r rpm -e --nodepsecho ">>> 卸载 Perl 相关 rpm..."
rpm -qa | grep -i perl | xargs -r rpm -e --nodepsecho ">>> 卸载 Net-Tools..."
rpm -qa | grep -i net-tools | xargs -r rpm -e --nodepsecho ">>> 删除 MySQL 残留目录..."
rm -rf /var/lib/mysql /var/log/mysqld.log /etc/my.cnf /etc/my.cnf.d
rm -rf /usr/lib64/mysql /usr/share/mysql /var/run/mysqld
rm -rf $DATA_DIRecho ">>> 清理 yum 缓存..."
yum clean allecho ">>> 卸载完成,检查结果:"
rpm -qa | grep -E "mysql|perl|net-tools" || echo ">>> 所有目标包已卸载!"
总结
整个过程主要分为三步:
- 准备 MySQL 及依赖的离线包
- 编写一键安装脚本
install_mysql.sh
- 验证安装,必要时用
uninstall_mysql.sh
清理
这样一来,就能在没有网络的 CentOS7 环境里快速完成 MySQL 8.0 的安装部署。