您所在的位置: 首页>>数据库>>MySQL>>

PHP5连接mysql5的认证协议问题

http://database.51cto.com  2005-11-02 23:03    LinuxAID  我要评论(0)
  • 摘要:MYSQL 4.1以后, 采用了一种新的用户认证协议, 对于老的客户端会出现不支持认证协议的错误, 以下是官方网站的解决方法
  • 标签:SQL  PHP  协议  MySQL  认证
MYSQL 4.1以后, 采用了一种新的用户认证协议, 对于老的客户端会出现不支持认证协议的错误, 以下是官方网站的解决方法﹔
1Upgrade all client programs to use a 4.1.1 or newer client library.
更新客户端库,这需要更新PHP的扩展库,对于老的api PHP已经不提供了这样的扩展库了
2When connecting to the server with a pre-4.1 client program, use an account that still has a pre-4.1-style password.
使用以前建立的账号连接,对于在新的认证协议下建立的账户就不行了
3Reset the password to pre-4.1 style for each user that needs to use a pre-4.1 client program. This can be done using the SET PASSWORD statement and the OLD_PASSWORD() function: mysql> SET PASSWORD FOR
-> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');
Alternatively, use UPDATE and FLUSH PRIVILEGES: mysql> UPDATE mysql.user SET Password = OLD_PASSWORD('newpwd') -> WHERE Host = 'some_host' AND User = 'some_user';
mysql> FLUSH PRIVILEGES;
Substitute the password you want to use for ``newpwd'' in the preceding examples. MySQL cannot tell you what the original password was, so you'll need to pick a new one.
这是一个不错的办法,新建立的账号采用老式的加密协议
4Tell the server to use the older password hashing algorithm:
Start mysqld with the --old-passwords option.
这样新认证协议的优点就没法使用了
5Assign an old-format password to each account that has had its password updated to the longer 4.1 format. You can identify these accounts with the following query: mysql> SELECT Host, User, Password FROM mysql.user
-> WHERE LENGTH(Password) > 16;
For each account record displayed by the query, use the Host and User values and assign a password using the OLD_PASSWORD() function and either SET PASSWORD or UPDATE, as described earlier.
恢复已经升级了口令到老样式

深入SQL Server 2008
思科认证之CCNP考试最新资料宝典
CCNA认证考试Pass必备
IT工程师该不该考CCIE?顶级认证的阵痛与希望
如何有效防御SQL注入攻击
 
 验证码: (点击刷新验证码)   匿名发表
  • 野蛮生长

  • 作者:冯仑著
  • “地产界的思想家”冯仑纵横生意江湖20年来,第一次系统梳理出书。  三十年来中国民营企业从前公司时代发展到公司时代,21..
Copyright©2005-2008 51CTO.COM 版权所有