mysql.user 表的 Password 欄位儲存的是加密雜湊值,非明文。直接插入明文會導致驗證失敗,因伺服器比對的是加密值。
USE mysql;
INSERT INTO user (Host, User, Password) VALUES ('%', 'user_name', PASSWORD('your_password'));
FLUSH PRIVILEGES;
SET PASSWORD FOR 'user_name'@'%' = PASSWORD('your_password');
同樣需 FLUSH PRIVILEGES 或 mysqladmin reload 重新載入授權表。
GRANT ALL ON *.* TO 'user_name'@'%' IDENTIFIED BY 'your_password';
IDENTIFIED BY 子句會自動處理加密,無需額外 FLUSH PRIVILEGES。
mysqladmin -u root PASSWORD 'your_password'
直接修改 root 密碼,立即生效,最適合初始化腳本。
FLUSH PRIVILEGES;mysqladmin -u root reloadmysqladmin -u root flush-privileges❌ INSERT ... VALUES ('plain_text') — 未加密,登入必失敗。
✅ 永遠使用 PASSWORD() 或 IDENTIFIED BY 讓伺服器處理加密。