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;
EOF

echo ">>> 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 || true

echo ">>> 卸载 MySQL 相关 rpm..."
rpm -qa | grep -i mysql-community | xargs -r rpm -e --nodeps
rpm -qa | grep -i mysql | xargs -r rpm -e --nodeps

echo ">>> 卸载 Perl 相关 rpm..."
rpm -qa | grep -i perl | xargs -r rpm -e --nodeps

echo ">>> 卸载 Net-Tools..."
rpm -qa | grep -i net-tools | xargs -r rpm -e --nodeps

echo ">>> 删除 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_DIR

echo ">>> 清理 yum 缓存..."
yum clean all

echo ">>> 卸载完成,检查结果:"
rpm -qa | grep -E "mysql|perl|net-tools" || echo ">>> 所有目标包已卸载!"

总结

整个过程主要分为三步:

  1. 准备 MySQL 及依赖的离线包
  2. 编写一键安装脚本 install_mysql.sh
  3. 验证安装,必要时用 uninstall_mysql.sh 清理

这样一来,就能在没有网络的 CentOS7 环境里快速完成 MySQL 8.0 的安装部署。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值