MySQL 5.7 在 Ubuntu 上需彻底卸载:先查包名(如 mysql-server-5.7),停服务并 purge 卸载,删 /etc/mysql 和 /var/lib/mysql,用 dpkg -P 清 rc 状态包,最后验证无残留。

MySQL 5.7 在 Ubuntu 上无法仅靠 apt remove 彻底卸载,残留的配置、数据和包状态会导致重装失败或服务冲突。必须分步清理,否则后续安装 MySQL 8.0 或其他数据库大概率报错。
确认已安装的 MySQL 5.7 包名
不同 Ubuntu 版本(尤其是 18.04)中,MySQL 5.7 的实际包名可能带版本后缀,直接 apt remove mysql-server 可能漏掉关键组件。
- 运行
dpkg --list | grep mysql查看所有已安装的 MySQL 相关包,重点关注mysql-server-5.7、mysql-common、mysql-client-5.7和mysql-apt-config - 若看到
rc状态(如rc mysql-server-5.7),说明该包已被标记为“待清除”,但配置文件仍留着 —— 这正是后续问题的源头 - 不要跳过这步:Ubuntu 18.04 默认安装的是
mysql-server-5.7而非泛义的mysql-server,用错名称会导致卸载不全
停止服务并 purge 核心服务包
先停服务再删包,避免文件被占用;--purge 是关键,它会连带删除 /etc 下的配置文件,而普通 remove 不会。
- 执行
sudo systemctl stop mysql(Ubuntu 16.04+ 推荐)或sudo service mysql stop(兼容旧写法) - 禁用开机自启:
sudo systemctl disable mysql - 彻底移除服务主体:
sudo apt-get autoremove --purge mysql-server-5.7(注意带版本号) - 单独卸载
mysql-common:sudo apt-get remove mysql-common—— 它是很多 MySQL 组件的依赖基础,不删它,重装时会提示“package is in a very bad inconsistent state”
清理残余配置与数据目录
/var/lib/mysql 和 /etc/mysql 是两个最常被忽略的残留点,前者存全部数据库文件,后者存 my.cnf 等配置;不手动删,重装后可能沿用旧配置或拒绝初始化。
- 删数据目录:
sudo rm -rf /var/lib/mysql(⚠️ 确保已备份重要库) - 删配置目录:
sudo rm -rf /etc/mysql - 清空已标记为“removed but config remains”的包:
dpkg -l | grep ^rc | awk '{print $2}' | sudo xargs dpkg -P—— 这条命令专门对付rc状态包,比如mysql-client-core-5.7或libmysqlclient20 - 可选但推荐:检查是否还有残留 apt 源配置:
sudo apt-get remove --purge mysql-apt-config(如果你曾手动添加过 MySQL 官方源)
验证是否真正干净
别信“命令跑完了就完事”,Ubuntu 的包管理系统容易留下隐性痕迹,尤其当之前装过多个 MySQL 版本时。
- 再次运行
dpkg --list | grep mysql,输出应为空(或仅有无关的 libmysqlclient-dev 等开发包) - 检查关键路径是否存在:
ls /etc/mysql和ls /var/lib/mysql都应报No such file or directory - 尝试启动服务:
sudo systemctl start mysql应立即失败,并提示 “Unit mysql.service not found” —— 这才是干净的状态 - 最后执行
sudo apt-get update,确保软件源无冲突,为下一步重装铺平道路
最容易被跳过的其实是 mysql-common 和 dpkg -P 清理这两步;很多人删完 server 就以为结束了,结果重装 MySQL 8.0 时 root 登录失败、socket 连接拒绝、甚至 mysqld 进程根本起不来 —— 八成是这两个地方没清干净。


















