# 首次設定 root 密碼
mysqladmin -u root password 'newpass'
# 變更密碼
mysqladmin -u root -p'oldpass' password 'newpass'
# 遠端主機
mysqladmin -h host -u root -p'oldpass' password 'newpass'
-- 修改當前用戶密碼
SET PASSWORD = PASSWORD('newpass');
-- 修改指定用戶(需 mysql 資料庫權限)
SET PASSWORD FOR 'user'@'host' = PASSWORD('newpass');
USE mysql;
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;
MySQL 5.7+ 欄位為 authentication_string,5.6 為 password。
# Linux
kill `cat /var/lib/mysql/hostname.pid`
# 或 systemctl stop mysqld
# Windows
net stop mysql
# Linux
mysqld_safe --skip-grant-tables --skip-networking &
# Windows
mysqld --skip-grant-tables --skip-networking
--skip-networking 防止外部連入,安全第一。
mysql -u root
-- 進入後
USE mysql;
UPDATE user SET authentication_string=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
# 關閉 skip-grant-tables 進程
mysqladmin -u root -p'newpass' shutdown
# 正常啟動
systemctl start mysqld
# 或 mysqld_safe &
| 問題 | 解決 |
|---|---|
| 修改後仍無法登入 | 確認 Host 欄位匹配(localhost vs 127.0.0.1 vs %),逐個更新 |
| Windows 服務無法停止 | 工作管理員結束 mysqld.exe 進程 |
| FLUSH PRIVILEGES 報錯 | 確保在 mysql 資料庫下執行 |
| MySQL 8.0 caching_sha2_password | 用 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpass'; |
DELETE FROM mysql.user WHERE User='';UPDATE mysql.user SET Host='localhost' WHERE User='root';
4. 定期輪換密碼,納入密碼管理工具。
5. 重要環境啟用 validate_password 元件強制複雜度。
掌握以上方法,無論是日常修改還是緊急重置 root 密碼,都能從容應對。