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

MySQL 報錯「Event Scheduler: Failed to open table mysql.event」權限問題徹底解決

     編輯:MySQL 資料庫相關知識

錯誤現象

[ERROR] Event Scheduler: Failed to open table mysql.event
# 導致 MySQL 服務啟動失敗,Windows 服務報錯 1067 進程意外終止

根因:數據目錄權限不足

修改 datadir 到新路徑(如 D:/mysql/data)後,MySQL 服務運行賬戶(默認 Local System / Network Service)**無新目錄讀寫權限**,導致無法打開系統表 mysql.event。

兩種解決方案(擇一)

方案一:服務運行賬戶改為 Local System(最簡單,權限最大)

  1. Win+R → services.msc
  2. 找到 MySQL / MySQL57 服務 → 右鍵「屬性」
  3. 「登錄」標籤 → 選中「本地系統賬戶」→ 勾選「允許服務與桌面交互」
  4. 「應用」→ 重啟服務

缺點: 權限過高,不符合最小權限原則,生產環境不推薦。

方案二:給數據目錄授予 Network Service 完全控制權限(推薦,最小權限)

  1. 右鍵數據目錄(如 D:\mysql\data)→「屬性」→「安全」標籤
  2. 「編輯」→「添加」→ 輸入 NETWORK SERVICE →「檢查名稱」→ 確定
  3. 選中 NETWORK SERVICE → 勾選「完全控制」→ 「應用」→ 「確定」
  4. 重啟 MySQL 服務

原理: MySQL 默認以 Network Service 運行,授予目錄完全控制即可讀寫系統表。

進階:若已配置自定義服務賬戶

  1. 服務屬性 → 「登錄」 → 「此賬戶」 → 輸入自定義賬戶
  2. 同步給數據目錄授予該賬戶「完全控制」權限
  3. 確保賬戶具備「作為服務登錄」本地策略

驗證修復

# 命令行啟動測試
mysqld --defaults-file="D:\mysql\my.ini" --console
# 無 ERROR 輸出,最後顯示 "ready for connections" 即成功

總結

Event Scheduler: Failed to open table mysql.event **本質是文件系統權限問題**。**方案二(授予運行賬戶目錄完全控制)最符合安全規範**。遷移 datadir 時,**先授權、再修改配置、再啟動**,順序不能亂。

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