离线内网安装mysql 5.7必须严格按顺序安装rpm全依赖包,尤其不能遗漏mysql-community-libs-compat和libatomic;需彻底卸载mariadb、清空配置/数据/日志目录;初始化前须修复权限与密码策略。

离线内网环境安装 MySQL 5.7,必须用 RPM 全依赖包本地安装——不能依赖网络源,也不能跳过任何底层依赖,否则 mysqld --initialize 会直接失败或启动后立即退出。
卸载残留 MariaDB/MySQL 并清空旧数据目录
内网服务器常预装 MariaDB,不彻底清理会导致 RPM 安装时冲突或初始化报错 “Failed to find valid data directory”。
- 先停服务:
systemctl stop mariadb mysqld(若报错不存在可忽略) - 查已装包:
rpm -qa | grep -E "mariadb|mysql",逐个卸载:rpm -e --nodeps - 关键三清操作(缺一不可):
—rm -rf /etc/my.cnf /etc/my.cnf.d
—rm -rf /var/lib/mysql
—rm -rf /var/log/mysqld.log
按严格顺序安装 RPM 包(含 libs-compat 和 GPG 导入)
MySQL 5.7 的 RPM 包有强依赖链,mysql-community-libs-compat 是高频遗漏项——它提供 libmysqlclient.so.18 等兼容符号,缺失会导致 mysqld 启动时报 “undefined symbol: __cxa_throw” 或直接段错误。
- 先装系统基础依赖:
yum install -y libaio perl net-tools - 导入官方密钥(否则
rpm -ivh报签名错误):rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 - 按顺序执行(顺序错一个就可能失败):
—rpm -ivh mysql-community-common-*.rpm
—rpm -ivh mysql-community-libs-*.rpm
—rpm -ivh mysql-community-libs-compat-*.rpm
—rpm -ivh mysql-community-client-*.rpm
—rpm -ivh mysql-community-server-*.rpm
初始化失败常见原因与绕过方案
mysqld --initialize --user=mysql 在离线环境容易卡住或报错,核心问题不是命令本身,而是缺失运行时依赖或权限异常。
- 典型报错 “
mysqld: error while loading shared libraries: libatomic.so.1” → 补装:yum install -y libatomic - 报错 “
GLIBCXX_3.4.20 not found” → 检查:strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX,若最高只到 3.4.19,需升级libstdc++或临时软链(不推荐长期使用) - 数据目录权限不对 → 必须执行:
chown -R mysql:mysql /var/lib/mysql(哪怕目录是新建的) - 仍失败?加参数显式指定路径:
mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql
首次登录后必须改密码且注意策略限制
MySQL 5.7 默认启用密码强度校验,即使你只想设 123456,也会被拒绝:“Your password does not satisfy the current policy requirements”。
- 查初始密码:
grep 'temporary password' /var/log/mysqld.log - 登录后立刻执行(两步缺一):
—set global validate_password_policy=LOW;
—ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; - 注意:修改策略必须在
ALTER USER前,且仅对当前 session 有效;如需持久化,得写进/etc/my.cnf的[mysqld]段并重启服务
最易被忽略的是 mysql-community-libs-compat 包和 libatomic 运行时库——它们不出现在主流教程的“必装列表”里,但在 ARM64 或老旧 CentOS 7.6+ 环境中几乎是必现故障点。别信“只装 server 和 client 就够了”的说法。











