MySQL 5.1採用了基於密碼混編演算法的評鑑協議,它與早期用戶端(4.1之前)使用的協議不相容。如果你將伺服器升級到4.1之上,用早期的用戶端進行串連可能失敗,並給出下述訊息:
用戶端不支援伺服器請求的評鑑協議:請考慮升級MySQL用戶端。
要想解決該問題,應使用下述方法之一:
·升級所有的用戶端程式,以使用4.1.1或更新的用戶端庫。
·用4.1版之前的用戶端串連到伺服器時,請使用仍具有4.1版之前風格密碼的賬戶。
·對於需要使用4.1版之前的用戶端的每位使用者,將密碼恢複為4.1版之前的風格。可以使用SET PASSWORD語句和OLD_PASSWORD()函數完成該任務:
·mysql> SET PASSWORD FOR·-> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');也可以使用UPDATE和FLUSH PRIVILEGES:mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd')-> WHERE Host = 'some_host' AND User = 'some_user';mysql> FLUSH PRIVILEGES; |
用你打算使用的密碼替換前例中的“newpwd”。MySQL不能告訴你原來的密碼是什麼,因此,你需要選擇新的密碼。
·通知伺服器使用舊的密碼混編演算法:
1.使用“--old-passwords”選項啟動mysqld。
2.對於已將密碼更新為較長4.1格式的每個賬戶,為其指定具有舊格式的密碼。可以使用下述查詢確定這些賬戶:
3.
mysql> SELECT Host, User, Password FROM mysql.user |
4.
-> WHERE LENGTH(Password) > 16; |
對於查詢顯示的每個賬戶記錄,請使用Host和User值,並使用OLD_PASSWORD()函數以及SET PASSWORD或UPDATE之一指定密碼,如前面所介紹的那樣。
注釋:在早期的PHP版本中,mysql擴充不支援MySQL 4.1.1和更高版中的評鑑協議。無論使用的PHP版本是什麼,它均是正確的。如果你打算與MySQL 4.1或更高版本一起使用mysql擴充,需要使用前面介紹的選項之一,配置MySQL,以便與較早的用戶端一起使用。mysqli擴充(支援“改進的MySQL”,在PHP 5中增加)與MySQL 4.1和更高版本中使用的改進的密碼混編演算法相容,不需要對MySQL進行特殊配置就能使用該MySQL用戶端庫。
注:更多精彩教程請關注三聯圖文教程 頻道,