| 參數 | 含義 | 示例 | 注意 |
|---|---|---|---|
| basedir | MySQL 安裝根目錄(含 bin、share、scripts) | C:/Program Files/MySQL/MySQL Server 5.5/ | 以斜槓結尾,Windows 用正斜槓/或雙反斜槓\\ |
| datadir | 數據目錄(庫目錄、表文件 .frm/.ibd、系統表空間 ibdata1) | C:/ProgramData/MySQL/MySQL Server 5.5/Data/ | **權限必須 mysql 可讀寫** |
| innodb_data_home_dir | InnoDB 系統表空間文件 (ibdata1) 目錄 | C:/ProgramData/MySQL/MySQL Server 5.5/Data/ | 若為空,默認 = datadir;可單獨放置不同磁盤 |
| innodb_log_group_home_dir | Redo Log (ib_logfile*) 目錄 | C:/ProgramData/MySQL/MySQL Server 5.5/Data/ | 建議放高 IOPS 磁盤 |
| tmpdir | 臨時文件目錄(排序、臨時表) | C:/Windows/Temp/ | 空間不足導致 "Can't create temp file" |
現象:INSERT/UPDATE/DELETE 報錯,SELECT 正常。
原因:innodb_force_recovery > 0(1-6 級)會**禁止寫操作**,僅允許讀取導出數據。
排查:
SHOW VARIABLES LIKE 'innodb_force_recovery';
若非 0,修正 my.ini 移除或設 0,重啟服務。
--defaults-file 指定文件--defaults-extra-file 附加文件/etc/my.cnf、/etc/mysql/my.cnf、C:\my.ini、basedir\my.ini驗證生效配置:
mysqld --help --verbose 2>nul | findstr /R "basedir datadir innodb_data_home_dir"
# 1. 停止服務 net stop MySQL55 # 2. 複製數據目錄(保留權限) robocopy "C:\ProgramData\MySQL\MySQL Server 5.5\Data" "D:\MySQL\Data" /E /COPYALL # 3. 修改 my.ini datadir=D:/MySQL/Data innodb_data_home_dir=D:/MySQL/Data innodb_log_group_home_dir=D:/MySQL/Logs # 4. 調整目錄權限(Windows:安全性標籤授予 MYSQL 服務賬號完全控制) # 5. 啟動驗證 net start MySQL55 mysql -u root -p -e "SHOW VARIABLES LIKE 'datadir';"