程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> PHP5連接mysql5的認證協議問題

PHP5連接mysql5的認證協議問題

編輯:關於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.

恢復已經升級了口令到老樣式

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved