使用 apt-get --purge remove 往往無法完全清理 MySQL 產生的資料目錄、配置文件、日誌,導致重新安裝繼承舊問題。本文提供徹底卸載的標準流程。
# 1. 停止服務
sudo systemctl stop mysql
# 或
sudo service mysql stop
# 2. 移除所有相關套件 (含配置文件)
sudo apt-get --purge remove mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*
# 3. 移除不再需要的依賴套件
sudo apt-get autoremove
# 4. 清理 apt 緩存
sudo apt-get autoclean
# 5. 刪除資料目錄 (謹慎!備份優先)
sudo rm -rf /var/lib/mysql/
sudo rm -rf /var/lib/mysql-files/
sudo rm -rf /var/lib/mysql-keyring/
# 6. 刪除配置目錄
sudo rm -rf /etc/mysql/
sudo rm -rf /etc/mysql.conf.d/
# 7. 刪除日誌目錄
sudo rm -rf /var/log/mysql/
# 8. 刪除運行時 socket/pid 目錄
sudo rm -rf /var/run/mysqld/
sudo rm -rf /tmp/mysql.sock
# 9. 刪除 AppArmor 配置 (如存在)
sudo rm -rf /etc/apparmor.d/usr.sbin.mysqld
sudo rm -rf /etc/apparmor.d/abstractions/mysql
# 檢查是否有殘留套件
dpkg -l | grep -i mysql
# 檢查殘留文件
find / -name "*mysql*" -type d 2>/dev/null | grep -v "/proc\|/sys\|/run"
# 檢查用戶/組是否殘留
getent passwd mysql
getent group mysql
# 如存在且不再需要:
# sudo deluser mysql
# sudo delgroup mysql
# 更新套件索引
sudo apt-get update
# 安裝指定版本 (如 MySQL 8.0)
sudo apt-get install mysql-server-8.0
# 或 MariaDB
sudo apt-get install mariadb-server
/var/lib/mysql 由 mysql 運行時建立,--purge 不會刪除,必須手動 rm -rf/etc/mysql/my.cnf、/etc/mysql/conf.d/、/etc/mysql/mysql.conf.d/ 皆可能包含自定義配置systemctl daemon-reload 確保舊單元緩存清除#!/bin/bash
set -euo pipefail
echo "=== 停止服務 ==="
systemctl stop mysql 2>/dev/null || service mysql stop 2>/dev/null
echo "=== 移除套件 ==="
apt-get --purge remove -y 'mysql-*' 'mariadb-*' 2>/dev/null
apt-get autoremove -y
apt-get autoclean -y
echo "=== 清理文件 ==="
dirs=(
"/var/lib/mysql"
"/var/lib/mysql-files"
"/var/lib/mysql-keyring"
"/etc/mysql"
"/etc/mysql.conf.d"
"/var/log/mysql"
"/var/run/mysqld"
)
for d in "${dirs[@]}"; do
if [[ -d "$d" ]]; then
rm -rf "$d"
echo "Removed: $d"
fi
done
echo "=== 驗證 ==="
dpkg -l | grep -E 'mysql|mariadb' || echo "無殘留套件"
echo "完成!"