解析:客户端不支持鉴定协议的解决方法

上一篇 / 下一篇  2007-09-28 10:58:00 / 个人分类:数据库技术

 

MySQL 5.1采用了基于密码混编算法的鉴定协议,它与早期客户端(4.1之前)使用的协议不兼容。如果你将服务器升级到4.1之上,用早期的客户端进行连接可能失败,并给出下述消息:

shell> mysql

客户端不支持服务器请求的鉴定协议:请考虑升级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客户端库


TAG:

引用 删除 fdiwckp   /   2008-02-09 02:30:00
ivfdk希望大家健康平平安安幸福吉祥
引用 删除 fdikgfn   /   2008-02-02 11:19:00
oecw春节快乐啊朋友
引用 删除 fditygk   /   2007-10-07 11:00:00
gjyt你好,站长,本人出售域名ASPBUY.COM或寻求各种方式合作,加QQ:176032,注明"域名合作"
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-08-25  
     12
3456789
10111213141516
17181920212223
24252627282930
31      

数据统计

  • 访问量: 4291
  • 日志数: 146
  • 建立时间: 2006-12-16
  • 更新时间: 2008-04-07

RSS订阅

Open Toolbar