/usr/local/mysql/var 遷移至 /data/mysql/var/etc/my.cnf:datadir=/data/mysql/var/root/lnmp restart → 报錯:Starting MySQL...The server quit without updating PID file [FAILED]140513 11:59:34 mysqld_safe Starting mysqld daemon with databases from /data/mysql/var
/usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist
[ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
...
InnoDB: The first specified data file /data/mysql/var/ibdata1 did not exist: a new database to be created!
...
[ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
datadir,未將原 /usr/local/mysql/var 下的 系統表(mysql.*)、InnoDB 系統表空間、Redo Log 複製到新目錄。root:root,MySQL 進程以 mysql 用戶運行,無讀寫權限 → 無法創建/打開文件 → 啟動失敗。# 1. 停止服務
/etc/init.d/mysql stop
# 2. 複製整個數據目錄(保留權限、屬主)
cp -rp /usr/local/mysql/var /data/mysql/
# 3. 修改配置
# /etc/my.cnf
datadir=/data/mysql/var
socket=/data/mysql/var/mysql.sock
pid-file=/data/mysql/var/mysql.pid
log-error=/data/mysql/var/error.log
# 4. 確保權限正確(關鍵!)
chown -R mysql:mysql /data/mysql/var
# 5. 啟動驗證
/etc/init.d/mysql start
| 誤區操作 | 後果 | 正確做法 |
|---|---|---|
| 只複製用戶表,不複製 mysql 系統庫 | 缺失 plugin、host、user 等權限表 → Fatal error | 整目錄複製 cp -rp 或 rsync -a |
| 修改 datadir 後未改 socket/pid-file 路徑 | 客戶端連接失敗、PID 文件找不到 | 同步修改 socket、pid-file、log-error 到新目錄 |
| chown 只改目錄不遞歸改文件 | 子文件仍屬 root → 權限拒絕 | chown -R mysql:mysql /data/mysql/var |
| 直接啟動不看 error log | 盲目重試浪費時間 | tail -f /data/mysql/var/error.log 實時觀察 |
ps aux | grep mysqld 確認進程存活。mysql -uroot -p -e "SHOW VARIABLES LIKE 'datadir'" 確認生效路徑。SHOW DATABASES; 確認系統庫與業務庫均可見。SELECT * FROM mysql.user LIMIT 1; 確認權限表可讀。「The server quit without updating PID file」絕大多數是「數據目錄遷移不完整」或「權限錯誤」的癥狀表現,而非 PID 文件本身問題。 遷移時務必整目錄複製、遞歸授權、同步修改所有路徑配置,並以 error.log 為唯一診斷依據。