MySQL 資料庫中密碼必須用 PASSWORD() 函數加密儲存,因 user 表中以加密形式存放密碼而非純文字。若直接執行:
USE mysql;
INSERT INTO user (host, user, password) VALUES ('%', 'user_name', 'your password');
FLUSH PRIVILEGES;
連線會失敗,因伺服器比對的是加密值。FLUSH PRIVILEGES 重新載入授權表,也可用 mysqladmin -u root reload 或 mysqladmin -u root flush-privileges 實現。
INSERT INTO user (host, user, password) VALUES ('%', 'user_name', PASSWORD('your password'));
SET PASSWORD FOR user_name = PASSWORD('your password');
FLUSH PRIVILEGES 重載授權表。GRANT ALL ON *.* TO user_name@% IDENTIFIED BY 'your password';
mysqladmin -u root password 'your password'