MySQL 5.6 引入 explicit_defaults_for_timestamp 預設關閉導致 mysqld --skip-grant-tables 啟動報警告甚至失敗。本文提供 Windows 平台完整重置流程,含配置檔修正、手動啟動參數化、密碼更新與權限刷新。
mysqld --skip-grant-tables
[Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
Please use --explicit_defaults_for_timestamp server option.
警告雖不阻塞啟動,但規範運維需修正根因。
net stop mysql # 服務名可能為 MySQL56、MySQL57 等,用 `sc query` 確認
# 找到 [mysqld] 區段
[mysqld]
explicit_defaults_for_timestamp = true
# 假設 my.ini 路徑
mysqld --defaults-file="D:\MySQL\MySQL Server 5.6\my.ini" --skip-grant-tables
保持此命令行窗口開啟(mysqld 前台運行)。
mysql -u root
mysql> UPDATE mysql.user SET Password=PASSWORD('NewStrongPass123!') WHERE User='root' AND Host='localhost';
mysql> FLUSH PRIVILEGES;
Ctrl+C 關閉前台 mysqld
net start mysql
# 驗證新密碼
mysql -u root -p'NewStrongPass123!'
5.7 起 mysql.user 表密碼欄位從 Password 改為 authentication_string,更新語法:
UPDATE mysql.user SET authentication_string=PASSWORD('NewPass') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
或使用 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass';(需正常授權模式下)。
SELECT User, Host, plugin FROM mysql.user;DELETE FROM mysql.user WHERE User='root' AND Host!='localhost'; FLUSH PRIVILEGES;validate_password 插件強制密碼複雜度;