2010-11-30 151 views

回答

7

solution是使用MySQL的OLD_PASSWORD函數更新數據庫用戶的密碼。例如:

[[email protected] ~]$ mysql -u root -p mysql 

Enter password: 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A 

Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 267 
Server version: 5.1.41-3ubuntu12.1 (Ubuntu) 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

mysql> use mysql; 
Database changed 

mysql> update user set Password=OLD_PASSWORD('password') WHERE User='username'; 

Query OK, 0 rows affected (0.02 sec) 
Rows matched: 0 Changed: 0 Warnings: 0 

mysql> flush privileges; 

Query OK, 0 rows affected (0.00 sec) 

mysql> 
+0

從PHP 5.6.5開始,您需要在`my.ini`的`[mysqld]`部分設置這些值,以啓用與mysql 4客戶端的連接: old_passwords = 1 secure-auth = 0 您可能還需要將`mysql_old_password`添加到`mysql` db中`user`表中的`plugin`部分 – Wertisdk 2013-11-06 10:52:50

2

這是一個已知的MySQL問題。 C.5.2.4. Client does not support authentication protocol:

MySQL 5.1使用基於密碼散列算法的身份驗證協議,該算法與舊版(4.1之前)客戶端使用的算法不兼容。如果從4.0升級服務器,嘗試使用舊客戶端連接到服務器可能會失敗,並顯示以下消息:「客戶端不支持服務器請求的驗證協議 ;請考慮升級MySQL客戶端」。

要解決此問題,您應該使用以下方法之一:
1.升級所有客戶端程序以使用4.1.1或更新的客戶端庫。
2.使用4.1之前的客戶端程序連接到服務器時,請使用仍具有4.1以前版本密碼的帳戶。
3.爲每個需要使用4.1之前的客戶端程序的用戶重置密碼爲4.1之前的樣式。
4.通知服務器使用舊密碼散列算法。

+0

這是解決辦法,但我發現直接程序來解決它(這是在更具體的細節相同的答案),我現在就把它在這裏,無論如何,THX! – palmic 2010-12-01 10:39:27

相關問題