欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【如何解决MySQL的客户端不支持鉴定协议】,下面是详细的分享!
如何解决MySQL的客户端不支持鉴定协议
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 -> 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客户端库。
以上所分享的是关于如何解决MySQL的客户端不支持鉴定协议,下面是编辑为你推荐的有价值的用户互动:
相关问题:MySQL中的中文在客户端中显示为问号的解决办法?
答:当然是mysql的编码问题,你在创建数据库的时候,要选择UTF-8。 而且,你的程序在插入数据,也要保持utf8 >>详细
相关问题:MYSQL 08S01错误怎么解决
答:MYSQL出错代码及出错信息对照 1005:创建表失败 1006:创建数据库失败 1007:数据库已存在,创建数据库失败 1008:数据库不存在,删除数据库失败 1009:不能删除数据库文件导致删除数据库失败 1010:不能删除数据目录导致删除数据库失败 1011:... >>详细
相关问题:mysql客户端窗口的编码怎么改成UTF-8的
答:以下是修改为utf-8编码的过程: 1、关闭mysql服务 [plain] view plaincopy service mysql stop 2、修改 /etc/mysql/my.cnf (默认的安装路径) [plain] view plaincopy vim /etc/mysql/my.cnf 打开my.cnf后,在文件内的[mysqld]下增加如下两行设... >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
