新版MySQL密碼算法不同導致“ClIEnt does not support authentication protocol requested by server”錯誤
MySQL4.1.7密碼算法不同,你可以做如下選擇:
1)使用PHP5,用php_MySQLi.dll,而不是以前的PHP_MySQL.dll
2)將MySQL的密碼改用原來的那套算法(本文介紹)
以前一直用MySQL 3.23.44,PHP5正式發布後,喜歡嘗鮮的我忍不住了,用了幾天PHP5,才感覺我的Mysql太弱,於是乎升級我的Mysql,心一橫,最新的MySQL 5.0.1,嘿嘿,不信數據庫弱。
安裝很順利,登錄到MySQL
G:\Mysql\bin>MySQL -uroot
MySQL>......
然後刪除一些不用的帳號,只留下了一個root帳號。
更新root密碼:
MySQL>update user set password=password('passWord') where host='localhost' and user='root';
成功!
退出並重新啟動MySQL服務。
接下來配置phpMyadmin的Config.inc.PHP
修改MySQL用戶名、密碼
打開PHPMyadmin,登錄:
結果很意外竟然彈出錯誤信息:
ClIEnt does not support authentication protocol requested by server;
意思好像是需要我升級客戶端,我徹底失望了,我以為MySQL 5.0.1也和3.23.44一樣好安裝。
後來,我用Google搜索錯誤信息中的部分內容,搜索到了Mysql的官方網站,一看,明白了,原來是passWord算法的問題,因為5.0.1版MySQL的passWord算法和3.23.44的算法不一樣了
(原文地址:http://dev.mysql.com/doc/MySQL/en/Old_clIEnt.Html)
采取官方網站的解決辦法,一次搞定,嘿嘿
MySQL>SET PASSWord FOR
>'root'@'localhost' = OLD_PASSWORD('newpassWord');
寫此文章,僅希望有同樣問題的朋友能盡快解決此問題。
今天又用一種方法更改了密碼,因為現在才知道以前的命令用錯了,old-passWord要直接輸入才對!
今天的方法是,update MySQL.user set password = old_passWord('newpwd')
where host = 'localhost' and user = 'root';
然後flush priviledges;
ok,重新登陸,搞定!