Debian 12 默认预装 MariaDB 而非 MySQL,卸载旧版须先确认服务类型(mysql/mariadb)、停止服务、杀尽残存进程(mysqld/mariadbd),再用 apt purge 彻底删除 mysql-server、mysql-client、mysql-common、dbconfig-mysql,最后手动清除 /var/lib/mysql、/etc/mysql、/etc/my.cnf、socket 文件及 mysql 用户组,并验证 3306 端口空闲、目录不存在、用户不存在后方可重装。

Debian 12 默认不带 MySQL,而是预装 MariaDB;如果你之前手动装过 MySQL(比如通过官网 APT 仓库),现在想换版本或重装,必须先彻底清掉旧 MySQL——否则 apt install mysql-server 会失败、服务起不来、socket 连不上,甚至新安装的配置被旧残留覆盖。
确认当前到底有没有 MySQL,还是 MariaDB 在跑
很多人以为自己在卸 MySQL,其实系统里跑的是 mariadb。先查清楚:
- 运行
sudo systemctl status mysql—— 如果报 “Unit mysql.service not found”,说明没 MySQL 服务,可能是 MariaDB - 再试
sudo systemctl status mariadb,如果显示 active (running),那真正占着 3306 端口、挂着 /var/lib/mysql 的是 MariaDB - 用
ps aux | grep -E "(mysqld|mariadb)"看进程名,mysqld是 MySQL,mariadbd或mariadb是 MariaDB -
dpkg -l | grep -i mysql和dpkg -l | grep -i mariadb分别看已安装包,避免误删错对象
停服务 + 杀残存进程,一步都不能跳
哪怕 systemctl stop mysql 显示成功,也可能有漏网的 mysqld 进程在后台跑(尤其你曾用 mysqld --skip-grant-tables 手动启过)。不杀干净,后续删 /var/lib/mysql 会失败,或者新安装时提示“目录非空”。
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
- 先执行
sudo systemctl stop mysql(如果存在) - 再执行
sudo systemctl stop mariadb(如果存在) - 强制扫一遍:
sudo pkill -f mysqld和sudo pkill -f mariadbd - 最后验证:
ps aux | grep -E "(mysqld|mariadb)"输出应为空,或只剩 grep 自身那一行
apt purge 必须包含 mysql-common 和 dbconfig-mysql
mysql-common 是 Debian MySQL 包体系的“配置根”,不删它,/etc/mysql/ 下的模板文件(如 debian.cnf)就留着,重装时直接冲突;dbconfig-mysql 则负责记录旧数据库配置元信息,不删会导致新安装卡在配置步骤。
- 一次性执行:
sudo apt-get --purge remove mysql-server mysql-client mysql-common dbconfig-mysql - 接着清理依赖:
sudo apt-get autoremove && sudo apt-get autoclean - 检查是否清完:
dpkg -l | grep -i "mysql\|mariadb"应无任何输出;若有,说明某个包没被 purge 到,得单独sudo apt-get --purge remove
手动删 /var/lib/mysql、/etc/mysql 和 mysql 用户组
APT 不管这些路径,但它们是重装失败的主因。删前务必确认:你真不需要里面的数据,且这些目录确实属于旧 MySQL(不是其他服务共用的)。
- 删数据目录:
sudo rm -rf /var/lib/mysql - 删配置目录:
sudo rm -rf /etc/mysql - 删可能存在的全局配置:
sudo rm -f /etc/my.cnf - 删 socket 文件:
sudo rm -f /var/run/mysqld/mysqld.sock /tmp/mysql.sock - 删 mysql 用户和组:
sudo userdel mysql 2>/dev/null && sudo groupdel mysql 2>/dev/null - 检查 PATH 是否残留:
echo $PATH | grep mysql,如有,去~/.bashrc、/etc/environment里删掉对应export PATH=...行
重装前最后一验:sudo ss -tlnp | grep :3306 应无输出,ls /var/lib/mysql 报“No such file”,id mysql 报“no such user”。这三样都满足,才算是真正干净了——这时候再走官网 APT 安装流程,就不会被“配置冲突”“目录非空”“socket 无法创建”之类的问题卡住。

















