当前位置: 首页 > news >正文

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 ">>> 所有目标包已卸载!"

总结

整个过程主要分为三步:

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

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


http://www.lryc.cn/news/626348.html

相关文章:

  • SpringBoot前后端token自动续期方案
  • nginx-下载功能-状态统计-访问控制
  • 开源的实时 Web 日志分析器GoAccess安装使用指南
  • 鸿蒙安卓前端中加载丢帧:ArkWeb分析
  • Vue3全局配置Loading的完整指南:从基础到实战
  • electron进程间通信-从主进程到渲染器进程
  • PyTorch API 3 - distributed
  • 实时视频技术选型深度解析:RTSP、RTMP 与 WebRTC 的边界
  • SpringWeb详解
  • Causal-Copilot: An Autonomous Causal Analysis Agent 论文解读
  • Nginx 作为反向代理时设置的请求头
  • 深度解析:RESTful API中的404错误 - 不是所有404都是Bug
  • 安路EF2系列芯片单口ram ip核使用方法
  • 记录 docker容器打包成镜像 在其他服务器快速启动镜像和容器
  • 零基础学Java第二十二讲---异常(2)
  • KV cache
  • 在Excel和WPS表格中制作可打印的九九乘法表
  • MySQL事务及原理详解
  • MySQL 数据与表结构导出 Excel 技术文档
  • 如何使用matlab将目录下不同的excel表合并成一个表
  • python中view把矩阵维度降低的时候是什么一个排序顺序
  • 系统架构设计师备考第1天——系统架构概述
  • 深入Linux内核:架构设计与核心功能解析
  • 车联网(V2X)中万物的重新定义---联网汽车新时代
  • 自动驾驶汽车机器学习安全实用解决方案
  • RK android14 Setting一级菜单IR遥控器无法聚焦问题解决方法
  • Building Systems with the ChatGPT API 使用 ChatGPT API 搭建系统(第二章学习笔记及总结)
  • 汽车ECU实现数据安全存储(机密性保护)的一种方案
  • 【openssl】openssl CA.pl 签发证书操作步骤
  • Redis String全方位指南:命令、编码、时间复杂度与应用场景