首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SUSE Linux RPM 方式卸載 MySQL 5.5 完整操作手冊:從停服到清理殘留的標準化流程

     編輯:MySQL 資料庫相關知識

環境基線


OS: SUSE Linux Enterprise Server 10 SP3 (x86_64)
MySQL: 5.5.37 RPM 包安裝
安裝包列表:
  MySQL-server-5.5.37-1.sles10
  MySQL-client-5.5.37-1.sles10
  MySQL-devel-5.5.37-1.sles10
  MySQL-shared-5.5.37-1.sles10
  MySQL-shared-compat-5.5.37-1.sles10
  MySQL-test-5.5.37-1.sles10
  MySQL-embedded-5.5.37-1.sles10

標準卸載流程

階段 1:優雅停止服務


# 推薦:init 腳本停止(執行關閉鉤子、刷盤)
/etc/init.d/mysql stop
# 輸出: Shutting down MySQL. done

# 驗證進程已退出
ps -ef | grep mysqld
# 無 mysqld 進程即成功

階段 2:RPM 包移除(依賴關係順序)


# 核心原則:先移除依賴包,後移除被依賴包
# 1. 移除測試、嵌入式、開發包(無被依賴)
rpm -e --nodeps MySQL-test-5.5.37-1.sles10
rpm -e --nodeps MySQL-embedded-5.5.37-1.sles10
rpm -e --nodeps MySQL-devel-5.5.37-1.sles10

# 2. 移除共享庫兼容包
rpm -e --nodeps MySQL-shared-compat-5.5.37-1.sles10

# 3. 移除客戶端、共享庫
rpm -e --nodeps MySQL-client-5.5.37-1.sles10
rpm -e --nodeps MySQL-shared-5.5.37-1.sles10

# 4. 最後移除服務端核心包
rpm -e --nodeps MySQL-server-5.5.37-1.sles10

關於 --nodeps:MySQL RPM 包間相互依賴,正常移除需嚴格按反向依賴順序。使用 --nodeps 強制忽略依賴檢查,配合上述順序可避免「包正在被使用」報錯。生產環境建議**不加 --nodeps**,嚴格按 rpm -e 順序執行,若報錯再分析具體依賴。

階段 3:清理殘留文件與目錄


# 1. 定位殘留路徑
find / -name mysql -type d 2>/dev/null | grep -v proc

# 典型殘留路徑:
/var/lib/mysql              # 數據目錄(核心)
/var/lib/mysql/mysql        # 系統庫
/usr/lib64/mysql            # 庫文件
/etc/my.cnf                 # 配置文件(可能在 /etc/)
/usr/local/xxx/sql/mysql    # 業務項目引用(勿誤刪)

# 2. 刪除 MySQL 專屬目錄(謹慎確認!)
rm -rf /var/lib/mysql
rm -rf /var/lib/mysql/mysql
rm -rf /usr/lib64/mysql
rm -rf /etc/apparmor.d/abstractions/mysql  # SUSE AppArmor 配置

# 3. 配置文件備份後刪除
[ -f /etc/my.cnf ] && mv /etc/my.cnf /etc/my.cnf.bak.$(date +%F)

# 4. 日志目錄(如自定義)
rm -rf /var/log/mysql  # 或 /var/log/mysqld.log

階段 4:系統用戶與服務清理


# 1. 檢查 mysql 用戶
id mysql
# uid=104(mysql) gid=106(mysql) groups=106(mysql)

# 2. 刪除用戶與組(確認無其他服務使用)
userdel mysql
groupdel mysql

# 3. 清理啟動腳本殘留
rm -f /etc/init.d/mysql
chkconfig --del mysql  # 或 systemctl disable mysql

階段 5:驗證徹底卸載


# 1. RPM 數據庫查詢
rpm -qa | grep -i mysql
# 無輸出 = 成功

# 2. 服務管理查詢
chkconfig --list | grep mysql
systemctl list-unit-files | grep mysql
# 無輸出 = 成功

# 3. 文件系統掃描
find / -name "*mysql*" -type f 2>/dev/null | head -20
# 僅剩應用代碼引用、備份文件等非 MySQL 運行時文件

避坑指南與特殊情況處理

場景風險應對
數據目錄掛載獨立分區rm -rf /var/lib/mysql 僅刪除掛載點文件,分區數據殘留先 umount /var/lib/mysql,再刪除目錄,分區另行處理
共享庫被其他程序佔用rpm -e 報錯「文件正在被使用」lsof /usr/lib64/mysql/libmysqlclient.so 找到進程停止後再移除
多 MySQL 版本共存誤刪較新版本文件嚴格匹配版本號 rpm -e MySQL-server-5.5.37-1.sles10,勿用通配符
AppArmor/SELinux 阻擋刪除權限拒絕臨時置於 permissive 模式或調整策略
生產環境誤操作數據永久丟失操作前必須確認備份可用,建議快照/備份後再執行

現代替代:包管理器自動化清理


# SUSE 12+ / openSUSE 使用 zypper
zypper remove 'MySQL-*'
zypper packages --unneeded | grep mysql  # 清理孤立依賴

# RHEL/CentOS 使用 yum/dnf
yum remove 'mysql*'
dnf autoremove  # 清理無用依賴

總結

RPM 方式卸載 MySQL 核心在於:**優雅停服 → 反向依賴順序移除包 → 徹底清理數據/配置/日志/用戶 → 多維驗證**。關鍵細節:

  1. 數據目錄 /var/lib/mysql 包含業務核心資產,**刪除前務必三確認備份**
  2. --nodeps 為雙刃劍,生產環境慎用,優先解決依賴關係
  3. SUSE 系統關注 AppArmor 配置殘留
  4. 卸載後檢查 /etc/my.cnf、/var/log/mysqld.log 等易遺漏路徑

遵循標準化流程,可確保環境乾淨,為後續版本升級、遷移、重裝鋪平道路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved