一、卸载前准备
1.1 为什么要正确卸载
直接删除MariaDB文件会导致:
– 残留配置文件影响重新安装
– 数据丢失无法恢复
– 系统服务残留导致端口占用
– 依赖包冲突
1.2 备份重要数据
卸载前务必备份所有数据库:
# 备份所有数据库
mysqldump -u root -p --all-databases --single-transaction \
--routines --triggers --events | \
gzip > /backup/mariadb/all_databases_$(date +%Y%m%d).sql.gz
# 备份单个数据库
mysqldump -u root -p --single-transaction mydb | \
gzip > /backup/mariadb/mydb_$(date +%Y%m%d).sql.gz
# 备份配置文件
sudo cp -r /etc/mysql /backup/mariadb/mysql_config_backup
1.3 确认MariaDB状态
# 查看MariaDB版本
mariadb --version
# 查看服务状态
sudo systemctl status mariadb
# 查看已安装的MariaDB包
dpkg -l | grep -i maria
# 查看数据目录大小
sudo du -sh /var/lib/mysql
二、停止MariaDB服务
2.1 停止服务
# 停止MariaDB服务
sudo systemctl stop mariadb
# 禁止开机自启
sudo systemctl disable mariadb
# 确认服务已停止
sudo systemctl status mariadb
2.2 检查端口释放
# 检查3306端口是否已释放
sudo ss -tulnp | grep 3306
# 如果端口仍被占用,强制终止进程
sudo kill -9 $(pgrep mariadbd)
三、卸载MariaDB
3.1 标准卸载(保留配置文件)
# 卸载MariaDB服务端和客户端
sudo apt remove --purge mariadb-server mariadb-client -y
# 卸载相关组件
sudo apt remove --purge mariadb-common mariadb-core -y
# 卸载Galera集群(如果安装了)
sudo apt remove --purge galera-4 -y
3.2 完全卸载(包括配置和数据)
# 完全卸载所有MariaDB包
sudo apt remove --purge mariadb-server mariadb-client \
mariadb-common mariadb-core galera-4 -y
# 自动移除依赖包
sudo apt autoremove --purge -y
# 删除配置文件
sudo rm -rf /etc/mysql
# 删除数据目录
sudo rm -rf /var/lib/mysql
# 删除日志文件
sudo rm -rf /var/log/mysql
# 删除运行时文件
sudo rm -rf /run/mysqld
3.3 使用dpkg强制卸载
如果apt卸载失败,可以使用dpkg强制卸载:
# 列出所有MariaDB相关包
dpkg -l | grep -i maria | awk '{print $2}'
# 强制逐个卸载
sudo dpkg --remove --force-remove-reinstreq \
mariadb-server mariadb-client mariadb-common
# 清除残留
sudo dpkg --purge --force-all $(dpkg -l | grep -i maria | awk '{print $2}')
四、清理残留文件
4.1 查找残留文件
# 查找MariaDB相关文件
sudo find / -name "*mariadb*" -o -name "*mysql*" 2>/dev/null | \
grep -v -E "(backup|\.sql|proc|sys)"
# 查找残留配置
sudo find /etc -name "*mariadb*" -o -name "*mysql*" 2>/dev/null
# 查找残留数据
sudo find /var -name "*mysql*" -o -name "*mariadb*" 2>/dev/null
4.2 清理残留目录
# 删除所有残留目录
sudo rm -rf /etc/mysql
sudo rm -rf /var/lib/mysql
sudo rm -rf /var/log/mysql
sudo rm -rf /var/lib/mysql-debian-sys-maint
sudo rm -rf /usr/share/mysql
sudo rm -rf /usr/lib/mysql
# 删除AppArmor配置(如果存在)
sudo rm -f /etc/apparmor.d/usr.sbin.mysqld
sudo rm -f /etc/apparmor.d/local/usr.sbin.mysqld
4.3 清理系统用户和组
# 查看mysql用户
id mysql
# 删除mysql用户和组
sudo userdel mysql
sudo groupdel mysql
# 查看mysql用户home目录
sudo rm -rf /home/mysql
4.4 清理systemd服务文件
# 重新加载systemd
sudo systemctl daemon-reload
# 重置失败状态
sudo systemctl reset-failed
4.5 清理APT缓存
# 清理APT下载缓存
sudo apt clean
# 清理不再需要的依赖
sudo apt autoremove --purge -y
# 验证无残留包
dpkg -l | grep -i maria
五、验证卸载完成
5.1 检查包状态
# 确认无MariaDB包
dpkg -l | grep -i maria
# 应该无输出
# 确认无mysql相关包
dpkg -l | grep -i mysql
# 应该无输出或仅显示其他依赖mysql的包
5.2 检查服务状态
# 确认服务不存在
sudo systemctl status mariadb
# 应该显示"Unit mariadb.service could not be found"
# 确认端口已释放
sudo ss -tulnp | grep 3306
# 应该无输出
5.3 检查文件残留
# 确认数据目录已删除
ls -la /var/lib/mysql
# 应该显示"No such file or directory"
# 确认配置目录已删除
ls -la /etc/mysql
# 应该显示"No such file or directory"
六、重新安装MariaDB
6.1 全新安装
# 更新软件源
sudo apt update
# 安装MariaDB
sudo apt install mariadb-server -y
# 启动服务
sudo systemctl start mariadb
sudo systemctl enable mariadb
# 运行安全配置
sudo mysql_secure_installation
6.2 恢复备份数据
# 解压备份文件
gunzip < /backup/mariadb/all_databases_20260514.sql.gz | \
mysql -u root -p
# 恢复单个数据库
gunzip < /backup/mariadb/mydb_20260514.sql.gz | \
mysql -u root -p mydb
# 验证数据
mysql -u root -p -e "SHOW DATABASES;"
6.3 恢复配置文件
# 恢复自定义配置
sudo cp /backup/mariadb/mysql_config_backup/my.cnf /etc/mysql/
# 重启服务
sudo systemctl restart mariadb
七、常见问题
Q1: 卸载时提示”依赖问题”
# 强制修复依赖
sudo apt --fix-broken install
# 然后重新卸载
sudo apt remove --purge mariadb-server -y
Q2: 卸载后无法安装新版本
# 清理dpkg状态
sudo dpkg --configure -a
# 清理APT锁
sudo rm -f /var/lib/dpkg/lock
sudo rm -f /var/lib/apt/lists/lock
sudo rm -f /var/cache/apt/archives/lock
# 重新安装
sudo apt update
sudo apt install mariadb-server -y
Q3: 卸载后端口仍被占用
# 查找占用端口的进程
sudo lsof -i :3306
# 终止进程
sudo kill -9 <PID>
# 如果是其他服务占用,修改MariaDB端口
# 在/etc/mysql/mariadb.conf.d/50-server.cnf中添加:
# port = 3307
Q4: 数据目录无法删除
# 检查是否有进程在使用
sudo lsof +D /var/lib/mysql
# 停止所有相关进程
sudo systemctl stop mariadb
sudo kill -9 $(pgrep mariadbd)
# 强制删除
sudo rm -rf /var/lib/mysql
总结
Debian上完全卸载MariaDB需要以下步骤:
- 备份数据:使用mysqldump导出所有数据库
- 停止服务:systemctl stop + disable
- 卸载软件包:apt remove –purge
- 清理残留:删除配置、数据、日志、用户
- 验证完成:确认无残留包和文件
- 清理APT缓存:apt clean + autoremove
注意事项:
– 卸载前务必备份数据
– 使用–purge选项彻底清除配置
– 验证端口已释放再重新安装
– 重新安装后恢复备份数据
注:本文基于MariaDB 11.4和Debian 12编写,卸载操作不可逆,请谨慎操作。