CentOS 7.9 离线安装 MySQL 8.0.37 完整指南
本文详细介绍了在无外网环境下,通过本地下载 RPM 包并在 CentOS 7.9 服务器上离线安装 MySQL 8.0.37 的完整流程。内容涵盖环境清理、依赖安装、RPM 包顺序安装、服务启动、初始密码获取、远程访问配置及防火墙设置等关键步骤,并提供常见问题解决方案,适用于生产环境内网部署。

本文详细介绍了在无外网环境下,通过本地下载 RPM 包并在 CentOS 7.9 服务器上离线安装 MySQL 8.0.37 的完整流程。内容涵盖环境清理、依赖安装、RPM 包顺序安装、服务启动、初始密码获取、远程访问配置及防火墙设置等关键步骤,并提供常见问题解决方案,适用于生产环境内网部署。

在生产环境中,我们常常会遇到服务器无法连接外网的情况,这时候就需要离线安装 MySQL。本文详细介绍如何从官网下载 MySQL 8.0.37,上传到 CentOS 7.9 服务器并进行完整安装配置。
下载类型: 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 | xargs rpm -e --nodeps 2>/dev/null
rpm -qa | grep mariadb | xargs rpm -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 /本地路径/mysql-8.0.37-1.el7.x86_64.rpm-bundle.tar root@服务器 IP:/tmp/
yum install -y libaio numactl
cd /tmp
tar -xvf mysql-8.0.37-1.el7.x86_64.rpm-bundle.tar
必须按顺序安装,否则会出现依赖错误:
# 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
systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld
grep 'temporary password' /var/log/mysqld.log
输出示例:A temporary password is generated for root@localhost: 临时密码
# 使用临时密码登录
mysql -u root -p
# 在 MySQL 中执行以下命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
FLUSH PRIVILEGES;
EXIT;
mysql -u root -p
-- 创建允许远程连接的 root 用户
CREATE USER 'root'@'%' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 或者修改现有 root 用户
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
RENAME USER 'root'@'localhost' TO 'root'@'%';
FLUSH PRIVILEGES;
EXIT;
# 备份原配置
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
(没开防火墙则不用管,云服务器需要在服务器管理打开安全组)
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
# 检查 SELinux 状态
getenforce
# 如为 Enforcing 模式,可临时设置为 Permissive
setenforce 0
# 或永久禁用(编辑/etc/selinux/config)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
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 | grep 3306
从另一台机器测试:
mysql -h 服务器 IP -u root -p -e "SELECT '远程连接成功' as status;"
navicat 测试
# 运行安全配置脚本
mysql_secure_installation
根据提示进行安全设置:
问题: Requires: mysql-community-client-plugins = 8.0.37-1.el7
解决: 确保先安装 client-plugins 包
解决: 检查错误日志 /var/log/mysqld.log
解决:
# 停止 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。关键要点:
这种离线安装方式在企业内网环境、安全要求高的生产环境中非常实用,确保了服务的稳定性和安全性。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML 转 Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online