二进制部署MySQL可绕过yum/apt依赖校验,避免mariadb-libs冲突;需卸载旧包、清空/etc/my.cnf等系统配置、显式指定--defaults-file及端口/socket/datadir,并解决libtinfo.so.5等运行时库缺失问题。

二进制部署 MySQL 本身就能绕过系统包管理器的依赖校验(比如 yum 或 apt 强制检查 libmysqlclient 冲突、mariadb-libs 卸载失败等问题),但“跳过校验”不是指跳过 MySQL 自身初始化或运行时校验,而是指规避系统级依赖干扰。关键在于:不装 RPM/APT 包、不碰系统默认路径、不共享 root 用户权限。
为什么 yum install mysql-server 总报依赖错误?
常见现象是执行 yum install mysql-community-server 时卡在:error: Failed dependencies: mariadb-libs is obsoleted by mysql-community-libs... 或提示 mysql-libs 已存在无法覆盖。
- 根本原因是系统预装了
mariadb-libs或旧版mysql-libs,而 yum 的依赖解析器拒绝降级或强制替换 - RPM 包还硬绑定
/var/lib/mysql、/etc/my.cnf等路径,和你自定义部署冲突 - 即使加
--nodeps强装,后续启动常因 SELinux 上下文或 systemd 单元文件错位失败
mysqld --initialize 前必须清理的三类残留
二进制部署最常踩的坑,不是命令不会敲,而是旧环境没清干净,导致 mysqld --initialize 报 Can't create/write to file 或静默失败。
- 删掉所有
mariadb相关包:rpm -e --nodeps $(rpm -qa | grep -i mariadb) - 确认
/etc/my.cnf和/etc/my.cnf.d/为空或已重命名(哪怕只是mv /etc/my.cnf /etc/my.cnf.bak)——否则mysqld会优先读它,覆盖你自己的配置 - 检查
/tmp/mysql.sock、/var/run/mysqld/是否残留 socket 或 pid 文件,用lsof -i :3306和ls -l /tmp/mysql*确认
用 skip-name-resolve 和 default_authentication_plugin 避开启动卡死
MySQL 5.7+ 启动时若 DNS 解析慢或认证插件不匹配,会卡在 “Starting MySQL..” 十几秒甚至超时退出,日志里只显示 mysqld_safe Logging to '/usr/local/mysql/data/error.log' 后无下文。
- 必须在
my.cnf的[mysqld]段落显式写入:skip-name-resolve(禁用反向 DNS 查询) - MySQL 8.0+ 默认用
caching_sha2_password,但老客户端连不上;加一行:default_authentication_plugin=mysql_native_password - 如果用
systemd启动,ExecStart必须指定--defaults-file路径,否则它仍会去找/etc/my.cnf
libtinfo.so.5 缺失时别编译,直接软链
Rocky Linux 9 / AlmaLinux 9 默认只有 libtinfo.so.6,但 MySQL 5.7/8.0 二进制包编译时链接的是 .so.5,启动时报错:error while loading shared libraries: libtinfo.so.5: cannot open shared object file。
- 不要去源码编译
ncurses—— 构建链太重,且易引发 glibc 版本冲突 - 一行解决:
ln -sf /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5 - 验证是否生效:
ldd /usr/local/mysql/bin/mysqld | grep tinfo应显示libtinfo.so.5 => /usr/lib64/libtinfo.so.6
真正麻烦的从来不是命令怎么写,而是你以为删干净了的 mariadb-libs 其实还躺在 /usr/lib64/ 里占着 libmysqlclient.so.18 的名字,或者 systemctl daemon-reload 后忘了 systemctl reset-failed mysqld 就直接 start —— 这些细节不盯住,mysqld 就永远停在 “Starting” 状态。

















