mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD(‘your_existing_password’). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file
有可能是PHP使用新版連線方式,而MySQL帳號密碼編碼是使用舊版Hash方式,長度只有16(新版是41),導致Hash值不對所以無法登入。
可用底下SQL來檢查所有帳號密碼的長度:
SELECT user, Length(Password) FROM mysql.user;
應該可看到類似底下的表格
+----------+--------------------+ | user | Length(`Password`) | +----------+--------------------+ | root | 41 | | root | 16 | | user2 | 16 | | user2 | 16 | +----------+--------------------+
長度41就是新編碼方式,16就是舊方式,所以我們必須將需要變更的帳號的密碼編碼方式做改變,方法很簡單,執行底下SQL就好了:
UPDATE mysql.user SET Password = PASSWORD('原有密碼') WHERE user = '要修改的帳號名稱';
修改完成之後再用前面的SQL看一下長度是否已經改變了,改變的話就重新載入權限:
FLUSH PRIVILEGES;
沒有留言:
張貼留言