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

mysqldump 導致 mysqld Crash 根因分析:視圖權限 Bug #14726

     編輯:MySQL 資料庫相關知識

現象

  • 環境:MySQL 5.0.16,RHEL 4.0
  • 操作:mysqldump 導出數據,進程卡住無響應
  • 實際:mysqld 進程崩潰(Signal 6),錯誤日志顯示 glibc detected *** free(): invalid pointer
  • 堆棧指向 show create table `T_SOD_BEHAVIORRECORD_VIEW`
  • 源碼安裝與 RPM 安裝均復現,升級至 5.0.19 解決

根因:官方 Bug #14726

標題:Crash when mysqldump encounters a view while privileges limited

觸發條件:

  1. 數據庫存在視圖
  2. 執行 mysqldump 的用戶權限受限(無 SHOW VIEW 或相關權限)
  3. 版本:5.0.16 受影響,5.0.17+ 已修復

堆棧關鍵幂


thd->query = show create table `T_SOD_BEHAVIORRECORD_VIEW`
Signal 6 (SIGABRT) -> glibc free(): invalid pointer

視圖元數據處理邏輯在權限檢查失敗時釋放了無效指針,導致堆損壞觸發 abort。

解決方案

  1. 升級至 5.0.17 或更高版本(推薦,含該修復及其他穩定性改進)。
  2. 臨時規避:確保備份用戶擁有 SHOW VIEW、SELECT 等足夠權限,或排除視圖導出(--ignore-table)。

教訓

  • mysqldump 卡住往往是 mysqld 已崩潰,務必首查錯誤日志。
  • 生產環境嚴禁運行已知嚴重 Bug 版本(5.0.16/5.0.18 等早期 5.0 版本)。
  • 備份賬號權限最小化原則下,必須包含 SHOW VIEW、LOCK TABLES、RELOAD、PROCESS 等備份必需權限。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved