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

MySQL ERROR 1006:創建數據庫失敗排查指南

     編輯:MySQL 資料庫相關知識

錯誤含義

ERROR 1006 (HY000): Can't create database 'db_name' (errno: xxx) — MySQL 無法創建數據庫目錄或文件。

常見原因與解決方案

1. 權限不足

  • MySQL 用戶賬戶無 CREATE 權限:GRANT CREATE ON *.* TO 'user'@'host';
  • 作業系統層面:MySQL 進程用戶(通常為 mysql)無數據目錄寫入權限。
    chown -R mysql:mysql /var/lib/mysql
    chmod 750 /var/lib/mysql

2. 磁碟空間不足

df -h /var/lib/mysql  # 檢查可用空間
# 清理日志、臨時文件或擴容磁碟

3. 文件系統 inode 耗盡

df -i /var/lib/mysql  # 檢查 inode 使用率
# 大量小文件(如表分區、臨時表)易導致 inode 滿而空間尚餘

4. 目錄已存在或殘留

  • 數據目錄下已有同名目錄(可能由失敗的創建殘留)。
  • 解決:確認無用後刪除 rm -rf /var/lib/mysql/db_name。

5. SELinux/AppArmor 阻擋

# 檢查審計日志
ausearch -m avc -ts recent
# 臨時關閉測試
setenforce 0
# 或配置正確上下文
restorecon -R /var/lib/mysql

6. 配置文件 datadir 指向錯誤路徑

  • 檢查 my.cnf 中 [mysqld] datadir 是否存在且可寫。
  • 符號鏈接指向錯誤目標。

排查步驟清單

  1. 查看 MySQL 錯誤日志(log_error 指定路徑)獲取詳細 errno。
  2. perror errno_code 解碼系統錯誤碼(如 13=Permission denied, 28=No space left)。
  3. 驗證 MySQL 進程用戶對 datadir 的讀寫執行權限。
  4. 檢查磁碟空間與 inode。
  5. 確認無同名殘留目錄。
  6. 檢查安全模塊(SELinux/AppArmor)審計日志。

預防措施

  • 監控磁碟空間與 inode 使用率,設置告警閾值(如 80%)。
  • 定期清理錯誤日志、慢查詢日志、二進制日志(配合 expire_logs_days)。
  • 使用專用分區掛載 datadir,隔離系統盤風險。
  • 部署自動化腳本驗證備份可恢復性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved