直接用二进制包部署mysql 5.7可行,但必须校验架构匹配、卸载mariadb-libs、安装libaio/numactl-libs/libatomic依赖、严格统一datadir路径与权限。

直接用二进制包部署 MySQL 5.7 是可行的,但“快速”不等于跳过关键校验——90% 的启动失败、初始化卡死、连接拒绝,都源于权限、依赖或架构错配这三处。
确认系统架构再下载对应二进制包
CentOS 7 有 x86_64 和 aarch64(ARM64)两种主流内核,装错包会直接报 cannot execute binary file: Exec format error。别靠猜,先执行:
-
uname -m—— 输出x86_64就选mysql-5.7.xx-linux-glibc2.12-x86_64.tar.gz - 输出
aarch64必须选带aarch64或arm64标识的包,比如mysql-5.7.27-aarch64.tar.gz - 清华、中科大镜像站的 MySQL 归档页里,ARM 包通常单独归类,别从 x86 列表里随便抓一个
卸载 mariadb-libs 是强制前置动作
CentOS 7 默认预装 mariadb-libs,它占着 /usr/lib64/libmysqlclient.so.18 这个路径,而 MySQL 5.7 二进制包自带同名但 ABI 不兼容的库。不清理,mysqld 启动时大概率报:
mysqld: symbol lookup error: mysqld: undefined symbol: __atomic_fetch_add_8
这不是缺 libatomic(那是另一回事),是链接器加载了错误的 client 库。执行:
-
rpm -qa | grep -i 'mariadb\|mysql'查残留 -
yum remove -y mariadb-libs—— 即使提示Failed dependencies也必须删 - 若因依赖阻塞,加
--nodeps强制移除,但确保没在跑 MariaDB 实例
初始化前必须装齐运行时依赖
MySQL 5.7 二进制包不自带所有动态库,以下三个包缺一不可:
-
libaio:异步 I/O 支持,缺失会导致mysqld启动后立即退出,日志无明显错误 -
numactl-libs:NUMA 架构支持,x86_64 系统上缺失常引发内存分配失败 -
libatomic:ARM64 或 GCC __atomic_fetch_add_8 错误(和上面那个错误现象一样,但根因不同)
统一安装命令:yum install -y libaio numactl-libs libatomic
datadir 权限与 my.cnf 路径必须严格匹配
这是最隐蔽也最高发的问题:你按教程写了 /data/mysql/data 为数据目录,但 my.cnf 里写成 datadir = /usr/local/mysql/data,或者 chown 只改了父目录没递归到子目录,mysqld 就会静默失败。
- 初始化命令必须显式指定路径:
mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data -
my.cnf中的[mysqld]段必须与初始化参数完全一致,尤其注意结尾斜杠有无 - 授权命令必须递归:
chown -R mysql:mysql /data/mysql,不能只chown mysql:mysql /data/mysql - 验证:
sudo -u mysql test -w /data/mysql/data返回 0 才算真正可写
临时密码藏在日志里,但前提是初始化成功;初始化成功的标志不是屏幕输出密码,而是 /data/mysql/data 下出现 ibdata1、mysql/、sys/ 等目录。卡在这一步,99% 是上面四点中某一处没对齐。











