离线部署指南:本地下载MySQL 8.0.37并上传服务器Centos7.9安装

离线部署指南:本地下载MySQL 8.0.37并上传服务器Centos7.9安装

离线部署指南:本地下载MySQL 8.0.37并上传服务器安装

在生产环境中,我们常常会遇到服务器无法连接外网的情况,这时候就需要离线安装MySQL。本文详细介绍如何从官网下载MySQL 8.0.37,上传到CentOS 7.9服务器并进行完整安装配置。

环境准备

  • 操作系统: CentOS 7.9
  • MySQL版本: 8.0.37
  • 安装方式: RPM包离线安装

第一步:下载MySQL安装包

访问MySQL官网

  1. 打开 MySQL Community Server下载页面
  2. 选择版本信息:
    • Operating System: Linux - Generic
    • OS Version: Linux - Generic (glibc 2.12)

下载类型: RPM Bundle

在这里插入图片描述

推荐下载包

选择 mysql-8.0.37-1.el7.x86_64.rpm-bundle.tar (995.4M),这个完整套件包含所有必要的RPM包,避免依赖问题。

第二步:服务器环境清理

在安装新MySQL之前,务必彻底清理系统上可能存在的旧版本:

# 停止MySQL相关服务 systemctl stop mysqld systemctl stop mariadb # 卸载现有MySQL/MariaDB包rpm -qa |grep -i mysql |xargsrpm -e --nodeps 2>/dev/null rpm -qa |grep mariadb |xargsrpm -e --nodeps 2>/dev/null # 清理残留文件和目录rm -rf /var/lib/mysql rm -rf /etc/my.cnf rm -rf /etc/my.cnf.d rm -rf /var/log/mysqld.log rm -rf /usr/share/mysql rm -rf /usr/lib64/mysql # 清理yum缓存 yum clean all 

第三步:上传安装包到服务器

使用SCP命令上传

scp /本地路径/mysql-8.0.37-1.el7.x86_64.rpm-bundle.tar root@服务器IP:/tmp/ 

安装必要依赖

yum install -y libaio numactl 

第四步:解压和安装MySQL

解压安装包

cd /tmp tar -xvf mysql-8.0.37-1.el7.x86_64.rpm-bundle.tar 
在这里插入图片描述

安装RPM包(关键步骤)

必须按顺序安装,否则会出现依赖错误:

# 1. 安装公共文件 yum install -y mysql-community-common-8.0.37-1.el7.x86_64.rpm # 2. 安装客户端插件(这是关键依赖包) yum install -y mysql-community-client-plugins-8.0.37-1.el7.x86_64.rpm # 3. 安装共享库 yum install -y mysql-community-libs-8.0.37-1.el7.x86_64.rpm # 4. 安装ICU数据文件 yum install -y mysql-community-icu-data-files-8.0.37-1.el7.x86_64.rpm # 5. 安装客户端工具 yum install -y mysql-community-client-8.0.37-1.el7.x86_64.rpm # 6. 安装MySQL服务器 yum install -y mysql-community-server-8.0.37-1.el7.x86_64.rpm 

如果遇到依赖问题,可以使用强制安装:

rpm -ivh mysql-community-*.rpm --nodeps --force 

其实可以一键安装,跳过未安装完的,防止依赖问题:yum install -y *.rpm --skip-broken

第五步:启动和初始化MySQL

启动MySQL服务

systemctl start mysqld systemctl enable mysqld systemctl status mysqld 
在这里插入图片描述

获取初始密码

grep'temporary password' /var/log/mysqld.log 

输出示例:A temporary password is generated for root@localhost: 临时密码

第六步:安全配置和远程访问设置

修改root密码

# 使用临时密码登录 mysql -u root -p # 在MySQL中执行以下命令: ALTER USER'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!'; FLUSH PRIVILEGES; EXIT;

配置root远程访问

mysql -u root -p 
-- 创建允许远程连接的root用户CREATEUSER'root'@'%' IDENTIFIED BY'YourStrongPassword123!';GRANTALLPRIVILEGESON*.*TO'root'@'%'WITHGRANTOPTION;-- 或者修改现有root用户ALTERUSER'root'@'localhost' IDENTIFIED BY'YourStrongPassword123!';RENAMEUSER'root'@'localhost'TO'root'@'%'; FLUSH PRIVILEGES;EXIT;

修改MySQL配置允许远程连接

# 备份原配置cp /etc/my.cnf /etc/my.cnf.bak # 添加远程访问配置cat>> /etc/my.cnf <<EOF # 允许远程连接 bind-address = 0.0.0.0 # 字符集设置 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 默认认证插件(兼容旧客户端) default_authentication_plugin = mysql_native_password EOF

第七步:防火墙和SELinux配置

(没开防火墙则不用管,云服务器需要在服务器管理打开安全组)

开放防火墙端口

firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload 

SELinux设置(如需要)

# 检查SELinux状态 getenforce # 如为Enforcing模式,可临时设置为Permissive setenforce 0# 或永久禁用(编辑/etc/selinux/config)sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 

第八步:重启和验证

重启MySQL服务

systemctl restart mysqld 

验证安装

# 检查版本 mysql --version # 本地连接测试 mysql -u root -p -e "SELECT version();"# 检查用户权限 mysql -u root -p -e "SELECT user, host FROM mysql.user;"# 检查端口监听netstat -tlnp |grep3306

远程连接测试

从另一台机器测试:

mysql -h 服务器IP -u root -p -e "SELECT '远程连接成功' as status;"

navicat测试

在这里插入图片描述

可选:安全加固

# 运行安全配置脚本 mysql_secure_installation 

根据提示进行安全设置:

  • 修改root密码
  • 移除匿名用户
  • 禁止root远程登录(如不需要)
  • 移除test数据库
  • 重新加载权限表

常见问题解决

1. 依赖安装错误

问题: Requires: mysql-community-client-plugins = 8.0.37-1.el7
解决: 确保先安装client-plugins包

2. 服务启动失败

解决: 检查错误日志 /var/log/mysqld.log

3. 远程连接被拒绝

解决:

  • 确认bind-address设置为0.0.0.0
  • 检查防火墙设置
  • 验证用户权限

4. 忘记root密码

# 停止MySQL systemctl stop mysqld # 跳过权限检查启动 mysqld_safe --skip-grant-tables &# 修改密码 mysql -u root UPDATE mysql.user SET authentication_string='' WHERE User='root'; FLUSH PRIVILEGES; EXIT;# 重启MySQL systemctl restart mysqld 

总结

通过本文的步骤,你可以成功在无法连接外网的CentOS 7.9服务器上安装配置MySQL 8.0.37。关键要点:

  1. 下载完整的RPM Bundle包避免依赖问题
  2. 按正确顺序安装RPM包,特别注意client-plugins的安装顺序
  3. 及时修改默认密码并配置安全选项
  4. 合理配置网络访问确保服务可用性

这种离线安装方式在企业内网环境、安全要求高的生产环境中非常实用,确保了服务的稳定性和安全性。


标签: #MySQL #离线安装 #CentOS #数据库部署 #Linux运维
难度: ⭐⭐⭐⭐☆
适用场景: 生产环境、内网服务器、安全要求高的环境

Read more

cJSON 1.7.19 源码深度分析:数据结构、解析流程与深度注释实践

cJSON 1.7.19 源码深度分析:数据结构、解析流程与深度注释实践

本文基于 cJSON 1.7.19 源码,从核心数据结构、JSON 解析/生成流程、内存管理到深度注释实践,系统梳理这一轻量级 JSON 库的设计与实现,适合 C 语言进阶与嵌入式开发学习。 目录 * 一、前言 * 二、核心数据结构:cJSON 结构体 * 2.1 结构体定义 * 2.2 内存布局(64 位系统示意) * 2.3 类型系统:位掩码设计 * 2.4 树状链表:一个例子 * 三、核心流程一:JSON 解析(字符串 → cJSON 树) * 3.1 调用链

By Ne0inhk
【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU

【缓存算法】一篇文章带你彻底搞懂面试高频题LRU/LFU

系列文章目录 文章目录 * 系列文章目录 * 一、LRU缓存算法 * 1.哈希表 + 双向链表 * 二、LFU缓存算法 * 1、哈希表 + 平衡二叉树 * 2、双哈希表 * 三、总结 一、LRU缓存算法 1.哈希表 + 双向链表 1.题目链接:LRU缓存 2.题目描述: 3.算法思路: 1.双向链表 + 哈希表 组合: 双向链表(带哑头 / 哑尾节点):维护缓存节点的访问顺序,最近使用的节点放在链表头部,最少使用的节点放在链表尾部(淘汰时直接删尾部); 哈希表(cache):实现 key 到节点的 O (1) 快速查找,解决链表遍历查找慢的问题; 2.

By Ne0inhk
Flutter 组件 vnlunar 适配鸿蒙 HarmonyOS 实战:高精度农历算法,构建民俗文化日期与节气治理架构

Flutter 组件 vnlunar 适配鸿蒙 HarmonyOS 实战:高精度农历算法,构建民俗文化日期与节气治理架构

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 vnlunar 适配鸿蒙 HarmonyOS 实战:高精度农历算法,构建民俗文化日期与节气治理架构 前言 在鸿蒙(OpenHarmony)生态迈向全球化部署、涉及多语言本地化(L10n)及深层文化特性适配的背景下,如何实现准确的阴阳历(农历)转换、二十四节气计算及民俗节日提醒,已成为提升应用“人文温度”与本地化竞争力的核心要素。在鸿蒙设备这类强调分布式时间同步与低功耗常驻显示(AOD)的环境下,如果应用依然依赖简单的查表法或通过网络接口获取农历信息,由于由于闰月计算的复杂性或离线环境限制,极易由于由于计算偏移导致传统节日提醒的误报。 我们需要一种能够实现天文级算法推演、支持高精度节气定位且具备纯 Dart 离线运作能力的历法治理方案。 vnlunar 为 Flutter 开发者引入了标准化的阴阳历转换协议。它不仅支持对天干地支、生肖及闰月的精确解构,更针对东南亚等地区的历法细微差异提供了专项适配。在适配到鸿蒙 HarmonyOS 流程

By Ne0inhk
【强化学习】演员评论家Actor-Critic算法(万字长文、附代码)

【强化学习】演员评论家Actor-Critic算法(万字长文、附代码)

📢本篇文章是博主强化学习(RL)领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对相关等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在👉强化学习专栏:        【强化学习】- 【单智能体强化学习】(7)---《演员评论家Actor-Critic算法》 演员评论家Actor-Critic算法 目录 Actor-Critic算法理解 1. 角色设定 2. 两者如何协作 3. 学习的核心 4. 为什么叫Actor-Critic? 生活中例子: Actor-Critic算法的背景与来源 1. 强化学习的起源 2. 策略梯度方法的局限性 3. Actor-Critic的提出 4. 历史发展与应用 Actor-Critic算法流程的推导 1. 强化学习的优化目标 2. 策略梯度定理 3. Critic:值函数估计 4. Actor:策略优化 5.

By Ne0inhk