標準卸載流程
1. 停止服務
systemctl stop mysql
# 或
service mysql stop
2. 完整移除套件(含配置檔)
apt-get --purge remove mysql-client mysql-server mysql-common mysql-server-core-* mysql-client-core-*
--purge:同時刪除配置檔(/etc/mysql/、/var/lib/mysql/ 等)
- 通配符
mysql-server-core-* 覆蓋所有版本核心套件
3. 自動移除依賴孤兒套件
apt-get autoremove
4. 清理 apt 快取(可選)
apt-get autoclean
驗證卸載結果
# 檢查殘留套件
dpkg -l | grep mysql
# 檢查殘留目錄
ls -la /etc/mysql/ 2>/dev/null && echo "殘留配置目錄"
ls -la /var/lib/mysql/ 2>/dev/null && echo "殘留資料目錄"
ls -la /var/log/mysql/ 2>/dev/null && echo "殘留日誌目錄"
# 檢查殘留使用者/群組
getent passwd mysql
getent group mysql
強制清理殘留(若標準流程未淨)
# 刪除殘留目錄
rm -rf /etc/mysql/
rm -rf /var/lib/mysql/
rm -rf /var/log/mysql/
rm -rf /var/run/mysqld/
# 刪除殘留使用者/群組(謹慎,確認無其他服務依賴)
userdel mysql
groupdel mysql
# 刪除 AppArmor 設定檔
rm -f /etc/apparmor.d/usr.sbin.mysqld
rm -f /etc/apparmor.d/disable/usr.sbin.mysqld
apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld 2>/dev/null
常見套件名稱對照表
| 功能 | 套件名稱模式 | 說明 |
| 伺服器 | mysql-server, mysql-server-5.7, mysql-server-8.0, mysql-server-core-* | 核心服務 |
| 客戶端 | mysql-client, mysql-client-5.7, mysql-client-8.0, mysql-client-core-* | 命令列工具 |
| 共用檔案 | mysql-common | 錯誤訊息、字元集等 |
| Percona 版 | percona-server-server-*, percona-server-client-*, percona-server-common-* | Percona 分支 |
| MariaDB 版 | mariadb-server, mariadb-client, mariadb-common | MariaDB 分支 |
特殊情況處理
多版本共存時只移除特定版本
# 僅移除 5.7
apt-get --purge remove mysql-server-5.7 mysql-client-5.7
# 保留 8.0,移除其他
apt-get --purge remove 'mysql-server-5.*' 'mysql-client-5.*'
Docker 容器內卸載
# 容器內執行相同指令,但通常建議重建映像而非修改運行容器
誤刪系統關鍵套件恢復
apt-get install --reinstall ubuntu-minimal # Ubuntu
apt-get install --reinstall debian-archive-keyring # Debian
卸載後重新安裝建議
- 更新套件索引:
apt-get update
- 安裝指定版本:
apt-get install mysql-server-8.0 mysql-client-8.0
- 執行安全初始化:
mysql_secure_installation
- 調整配置:編輯
/etc/mysql/mysql.conf.d/mysqld.cnf
一鍵腳本(生產環境請逐行確認)
#!/bin/bash
set -e
systemctl stop mysql
apt-get --purge remove -y 'mysql-*' 'percona-*' 'mariadb-*'
apt-get autoremove -y
apt-get autoclean
rm -rf /etc/mysql /var/lib/mysql /var/log/mysql /var/run/mysqld
userdel mysql 2>/dev/null; groupdel mysql 2>/dev/null
echo "MySQL 完全卸載完成"