Home >php教程 >php手册 >PHP 5 连接 mysql 5 的认证协议问题

PHP 5 连接 mysql 5 的认证协议问题

WBOY
WBOYOriginal
2016-06-21 09:15:42994browse

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.




Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn