结论是:centos 7 上卸载旧 mysql 并安装 8.0,最稳妥路径是先彻底清理再用官方 yum 源安装;仅 yum remove 无法清除数据目录、配置文件、共享库及用户组,易导致启动失败、连接拒绝或密码无效。

直接说结论:CentOS 7 上卸载旧 MySQL 并安装 8.0,最稳妥的路径是「先彻底清理,再用官方 yum 源安装」。跳过清理或只删 mysqld 服务,90% 会卡在启动失败、连接拒绝、密码无效这三类问题上。
为什么不能只用 yum remove mysql?
因为 CentOS 7 的 MySQL 安装痕迹分散在多个位置,yum remove 只删包管理记录,但以下残留物还在:
-
/var/lib/mysql/下的数据文件(哪怕你没数据,里面可能有旧版初始化的 ibdata1、ib_logfile*) -
/etc/my.cnf或/etc/my.cnf.d/里的配置项(比如default-storage-engine=myisam在 8.0 已废弃) -
/usr/lib64/mysql/libmysqlclient.so.18这类旧共享库(新客户端会动态链接失败) -
mysql用户和组(权限冲突会导致mysqld启动时无法写入/var/lib/mysql)
彻底卸载必须执行的 5 步
按顺序执行,缺一不可:
- 停服务:
systemctl stop mysqld(如果服务名是mysql,也试下systemctl stop mysql) - 删包:
yum remove -y mysql-community-* mysql-* mariadb-libs(mariadb-libs必须一起删,否则新 MySQL 客户端会报libmysqlclient.so.21: cannot open shared object file) - 清目录:
rm -rf /var/lib/mysql /etc/my.cnf /etc/my.cnf.d/ /var/log/mysqld.log - 删用户:
userdel -r mysql 2>/dev/null;groupdel mysql 2>/dev/null - 验证干净:
rpm -qa | grep -i 'mysql\|mariadb'应该返回空;ls /usr/lib64/mysql/不应存在libmysqlclient.so.*
安装 MySQL 8.0 的关键实操点
别直接 yum install mysql-community-server,先确保源可用:
- 导入密钥:
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022(2026 年仍有效) - 装源包:
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-10.noarch.rpm(注意 el7-10 是最新兼容版) - 确认启用 8.0:
yum repolist enabled | grep mysql,看到mysql80-community且状态为 enabled - 安装:
yum install -y mysql-community-server(不要加--nogpgcheck,那是放弃安全校验的临时补救,不是正解) - 启动后立刻查初始密码:
grep 'temporary password' /var/log/mysqld.log,不是/data/mysql/error.log—— yum 安装默认日志路径就是这个
安装后最容易忽略的两件事
很多人能启动服务,但连不上或改不了密码,问题就出在这两个地方:
- MySQL 8.0 默认用
caching_sha2_password插件认证,而很多老客户端(比如 Navicat 旧版、Python 2.x 的 pymysql)不支持。临时解决是登录后执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPass123!'; -
bind-address默认是127.0.0.1,想远程连必须手动改/etc/my.cnf加一行:bind-address = 0.0.0.0,再systemctl restart mysqld
真正麻烦的不是命令本身,而是残留配置和库文件的隐性干扰。只要 rpm -qa | grep mysql 还有输出,或者 /usr/lib64/mysql/ 下还躺着旧 .so 文件,后续所有操作都在给故障埋雷。











