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

MySQL 安裝在非默認目錄(D 盤)啟動失敗?一鍵修復配置指南

     編輯:MySQL 資料庫相關知識

現象

Windows 下將 MySQL 安裝至 D:\mysql(非默認 C:\mysql),雙擊 mysqld.exe 或啟動服務報錯:Can't find file: '.\mysql\host.frm' (errno: 2) 或服務啟動即停止。

根因

MySQL 啟動時會讀取配置文件 my.ini (或 my.cnf) 確定 basedir (安裝根目錄) 和 datadir (數據目錄)。若配置文件缺失或路徑錯誤,服務器找不到系統表(mysql 库)而啟動失敗。

解決方案:創建/修正 my.ini

1. 定位配置文件搜索順序

1. %WINDIR%\my.ini          (C:\Windows\my.ini)
2. %WINDIR%\my.cnf
3. 安裝目錄\my.ini           (D:\mysql\my.ini)
4. 安裝目錄\my.cnf
5. 基於 basedir 推導的路徑

建議:直接在 C:\Windows\my.ini (或 C:\my.ini) 創建,優先級最高,不受安裝路徑變動影響。

2. 最小可用 my.ini 內容

[mysqld]
# 基礎路徑(正斜槓或雙反斜槓均可)
basedir = D:/mysql
datadir = D:/mysql/data

# 基礎性能參數(可選)
port = 3306
default_storage_engine = InnoDB
character_set_server = utf8mb4
collation_server = utf8mb4_general_ci

# 日誌與錯誤
log_error = D:/mysql/logs/error.log
slow_query_log = 1
slow_query_log_file = D:/mysql/logs/slow.log
long_query_time = 1

# InnoDB 基礎
innodb_buffer_pool_size = 256M
innodb_log_file_size = 64M
innodb_file_per_table = 1

3. 創建必要目錄並初始化數據目錄

# 以管理員身份打開 CMD
mkdir D:\mysql\data
mkdir D:\mysql\logs
mkdir D:\mysql\tmp

# 初始化數據目錄(MySQL 5.7.6+ / 8.0)
cd D:\mysql\bin
mysqld --initialize-insecure --basedir=D:\mysql --datadir=D:\mysql\data
# --initialize-insecure:生成隨機 root 密碼並寫入 .err 日志;不加 insecure 則無密碼

# 5.7.5 及更早
mysql_install_db --basedir=D:\mysql --datadir=D:\mysql\data

4. 註冊並啟動服務

# 註冊服務(服務名自定)
mysqld --install MySQL_D_Drive --defaults-file=C:\Windows\my.ini

# 啟動
net start MySQL_D_Drive
# 或
sc start MySQL_D_Drive

5. 驗證連接並修改 Root 密碼

mysql -u root -p -h 127.0.0.1 -P 3306
# 輸入初始密碼(查看 .err 日志)或直接回車(insecure 模式)

-- 修改密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
FLUSH PRIVILEGES;

常見坑排查表

現象原因解決
服務啟動後秒停datadir 無 mysql 系統表執行 mysqld --initialize 初始化
Can't create test file數據目錄權限不足確保 MySQL 服務賬號對 D:\mysql\data 有完全控制權
端口衝突 3306已有 MySQL 實例運行netstat -ano | findstr 3306 找 PID 殺掉,或改 port=3307
配置不生效讀取了錯誤的 my.inimysqld --help --verbose 2>&1 | findstr -i "my.ini" 確認實際讀取路徑
中文亂碼字符集未統一配置 character_set_server=utf8mb4,連接串加 characterEncoding=utf8

多實例部署擴展

同機運行多個 MySQL(如 3306、3307):

[mysqld_3306]
basedir = D:/mysql_3306
datadir = D:/mysql_3306/data
port = 3306
socket = D:/mysql_3306/mysql.sock
log_error = D:/mysql_3306/logs/error.log

[mysqld_3307]
basedir = D:/mysql_3307
datadir = D:/mysql_3307/data
port = 3307
socket = D:/mysql_3307/mysql.sock
log_error = D:/mysql_3307/logs/error.log

啟動:mysqld --defaults-file=C:\Windows\my.ini --defaults-group-suffix=_3306。

總結

非默認目錄安裝 MySQL 核心在於 「顯式指定 basedir/datadir → 初始化數據目錄 → 註冊服務指定配置文件」。將 my.ini 放在 C:\Windows\ 並寫入正確路徑,是最穩健、最不易因升級/遷移失效的做法。完成上述步驟,D 盤 MySQL 即可像 C 盤一樣穩定運行。

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