> php教程 > php手册 > PHP5连接Mysql5的认证协议问题

PHP5连接Mysql5的认证协议问题

WBOY
풀어 주다: 2016-06-21 09:08:44
원래의
859명이 탐색했습니다.

mysql|php5|问题

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.

恢复已经升级了口令到老样式。



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿