2009-11-29 35 views
1

我很難將我的MySQL 4.1數據庫從舊的16字節密碼哈希移植到新的41字節哈希。問題是,mysqld服務器會自動以「old-passwords = on」指令開始,這會將新密碼設置爲41字節長度。如何在Mysql 4.1中關閉舊密碼

我的問題:有誰知道我如何告訴mysqld在沒有「old-passwords = on」指令的情況下運行?我嘗試了my.ini,commmandline,在本地設置變量,但沒有任何工作。

非常感謝! Philipp

回答

1

首先要檢查的是mysql數據庫中userPassword字段的寬度。在4.1之前,這是16個字符寬。升級到4.1時,應通過提供的mysql_upgrade實用程序將寬度更改爲41個字符。如果由於某些原因錯過了該步驟,服務器將默認使用舊的16字節散列,這是您描述的行爲。

在MySQL文檔中有這樣的write up

如果您發現您的表需要從char(16)更新爲char(41)並且您具有mysql_update實用程序,請運行該實用程序以完成升級。或者(進行備份,然後你可以)使用手動更新:

ALTER TABLE user 
MODIFY Password char(41) character set latin1 collate latin1_bin NOT NULL default '' 
+0

感謝馬丁, 更新密碼長度正如你所提到也是爲了解決我的問題的一個必要步驟,但不是唯一的一個。 我發現我必須在my.ini配置文件中設置標誌「old-password = 0」。在ini文件的正確部分設置此選項非常重要。部分名稱似乎與Windows服務名稱一致:在我的情況下,Windows服務名稱是「MySQL4」 - 不幸的是,該部分必須手動創建,因爲安裝後的默認名稱似乎是「mysqld」。 一切順利! – Philipp 2009-12-05 12:07:58