mysql -u root -p
-- 進入 mysql> 提示符
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPass123!');
-- 5.7.6+ / 8.0
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';
FLUSH PRIVILEGES;
優點:純 SQL、可在應用程式/腳本中執行、支援主機通配符批量修改。
# 已知舊密碼
mysqladmin -u root -p'old_pass' password 'NewPass123!'
# 無舊密碼(跳過權限模式下)
mysqladmin -u root password 'NewPass123!'
優點:無需進入互動 Shell、適合 Shell 腳本/Ansible 自動化。
mysql -u root -p
USE mysql;
-- 5.7.6+ / 8.0
UPDATE user SET authentication_string = PASSWORD('NewPass123!') WHERE User = 'root' AND Host = 'localhost';
-- 5.7.5 及更早
UPDATE user SET password = PASSWORD('NewPass123!') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
注意:PASSWORD() 在 8.0.11 棄用,建議改用 ALTER USER。
-- 修改所有 root 帳號
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPass123!');
SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('NewPass123!');
SET PASSWORD FOR 'root'@'%' = PASSWORD('NewPass123!');
-- 或
ALTER USER 'root'@'localhost', 'root'@'127.0.0.1', 'root'@'%' IDENTIFIED BY 'NewPass123!';
mysql -u root -p'NewPass123!' -e "SELECT 1;" 確認生效。| 版本 | 密碼欄位 | 推薦語句 | PASSWORD() |
|---|---|---|---|
| 5.6 / 5.7.5- | password | SET PASSWORD / UPDATE | 支援 |
| 5.7.6+ | authentication_string | ALTER USER / SET PASSWORD | 支援但棄用 |
| 8.0 | authentication_string | ALTER USER | 移除 |
root@'%',僅保留 localhost/127.0.0.1/管理網段。validate_password 元件強制策略。掌握三種修改方式,應對各種場景遊刃有餘。