mysqladmin -u root -p password 'new_password'
執行後提示 Enter password: 輸入舊密碼,即可完成修改。
-- 錯誤示範
mysqladmin -u root -p password 'woshiduide' -- 正確
mysqladmin -u root -p password 'woshiduide' -- 錯誤:實際密碼變成 'woshiduide'(含單引號)
驗證方式:
mysql -u root -p'woshiduide' -- 含引號才能登入,證明密碼被錯誤設定
mysqladmin -u root -p'woshiduide' password 123456
mysql -u root -p
USE mysql;
UPDATE user SET authentication_string = PASSWORD('new_pass') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
EXIT;
注意:MySQL 5.7+ 欄位為 authentication_string,舊版為 Password。
mysql -u root -p
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_pass');
FLUSH PRIVILEGES;
EXIT;
--skip-grant-tables 啟動:mysqld --skip-grant-tables &mysql -u root
USE mysql;
UPDATE user SET authentication_string = PASSWORD('new_pass') WHERE User = 'root';
FLUSH PRIVILEGES;
| 坑點 | 錯誤表現 | 正確做法 |
|---|---|---|
| 密碼加引號 | 實際密碼包含引號字符 | password 'newpass' 無引號 |
| -p 後直接跟密碼無空格 | -pwoshiduide 被解析為密碼 "woshiduide",但若密碼以特殊字符開頭會失敗 |
-p 空格後輸入,或 -p'password' 完整包裹 |
| 修改後未 FLUSH PRIVILEGES | 新密碼不生效,舊密碼仍可登入 | SQL 修改後必須執行 FLUSH PRIVILEGES |
| Host 欄位不匹配 | 本機能登入,遠端不能(或反之) | 確認 User 與 Host 組合精確匹配,必要時建立 root@'%' |
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_pass';
-- 或
SET PASSWORD FOR 'root'@'localhost' = 'new_pass'; -- 8.0 不需 PASSWORD()