首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 修改 datadir 啟動失敗?別忘了 AppArmor 權限配置

     編輯:MySQL 綜合教學

問題現象

修改 MySQL 配置檔 my.cnf 中的 datadir 指向新目錄 (如 /data/mysql) 後,重啟服務失敗。錯誤日誌提示 plugin 表無法讀取,建議執行 mysql_upgrade,但實際上並非資料表損壞。

根因:AppArmor 強制存取控制

Ubuntu/Debian 等系統預設啟用 AppArmor,MySQL 設定檔 /etc/apparmor.d/usr.sbin.mysqld 僅允許訪問預設資料目錄 (/var/lib/mysql)。新目錄未在白名單中,導致讀寫被攔截。

解決方案:更新 AppArmor 規則

  1. 編輯設定檔:vim /etc/apparmor.d/usr.sbin.mysqld
  2. 在檔案末尾 (或適當位置) 添加新資料目錄權限:
      /data/mysql r,
      /data/mysql/** rwk,
  3. 重新載入 AppArmor 設定:
    service apparmor reload
    # 或
    systemctl reload apparmor
  4. 重啟 MySQL 服務驗證:service mysql restart

補充說明

  • 若系統為 CentOS/RHEL 系列,請檢查 SELinux 而非 AppArmor:semanage fcontext -a -t mysqld_db_t "/data/mysql(/.*)?" + restorecon -Rv /data/mysql + setsebool -P mysql_connect_any 1。
  • 修改 datadir 後,務必將舊目錄資料完整複製至新目錄,並確保擁有者為 mysql:mysql (chown -R mysql:mysql /data/mysql)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved