必须彻底卸载MariaDB,否则MySQL安装会因端口冲突、/var/lib/mysql残留或mariadb-libs未清理而失败;需用yum remove mariadb mariadb-server mariadb-libs mariadb-devel,强制删除残留目录和配置文件,并验证rpm -qa | grep mariadb无输出。

CentOS 7 卸载 MariaDB 必须彻底,否则后续安装 MySQL 会因端口冲突、/var/lib/mysql 目录残留或 mariadb-libs 包未清理而失败——尤其是 mariadb-libs 被很多系统组件依赖,直接 yum remove 常常漏掉它。
查全所有 mariadb 相关包再卸载
仅用 yum remove mariadb 会留下 mariadb-libs 和 mariadb-devel,它们不显示在默认卸载列表里,但会阻塞 MySQL 安装。
- 先列出全部:
rpm -qa | grep mariadb - 常见输出类似:
mariadb-5.5.68-1.el7.x86_64、mariadb-server-5.5.68-1.el7.x86_64、mariadb-libs-5.5.68-1.el7.x86_64、mariadb-devel-5.5.68-1.el7.x86_64 - 一次性卸载(推荐):
yum remove mariadb mariadb-server mariadb-libs mariadb-devel - 若提示依赖冲突或卸载失败,再用
rpm -e --nodeps强制移除单个残留包
删干净 /var/lib/mysql 和 /etc/my.cnf
MySQL 初始化时若发现 /var/lib/mysql 已存在且含旧数据(哪怕只是空目录),会拒绝启动并报错 Failed to initialize database 或卡在 mysqld --initialize 阶段。
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离
- 确认 MariaDB 已停:
systemctl stop mariadb且systemctl disable mariadb - 强制删除数据目录:
rm -rf /var/lib/mysql - 删配置文件:
rm -f /etc/my.cnf和rm -rf /etc/my.cnf.d/ - 别忘了 socket 文件:
rm -f /var/lib/mysql/mysql.sock - 验证:
ls /var/lib/mysql应报No such file or directory
检查是否真卸载干净
卸载后必须验证,因为 yum remove 不保证清除所有 RPM 包,尤其 mariadb-libs 经常被其他软件(如 qt-mysql)间接依赖而保留。
- 运行:
rpm -qa | grep mariadb—— 输出应为空 - 再查可能的残留依赖:
rpm -q --whatrequires mariadb-libs,若返回包名,说明有其他组件仍需它,此时不能硬删,需权衡是否保留或一并处理 - 检查用户和组:
id mysql,若返回 “no such user”,说明mysql用户未被误删(MySQL 安装时会重建);若存在且是 MariaDB 创建的,可留着或userdel -r mysql后由 MySQL 初始化重建
最易忽略的是 mariadb-libs 和 /var/lib/mysql 目录残留——这两个点没清干净,后续 MySQL 启动日志里会出现 Can't start server : Bind on unix socket: Permission denied 或反复报初始化失败,但错误信息里不提 MariaDB,容易误判为权限或 SELinux 问题。

















