2014-04-01 69 views
1

我試圖轉移與用戶的哈希表和他們的憑據mysql的轉移密碼

被存儲在這些表中的用戶的密碼存儲與MySQL密碼大MySQL數據庫( ) 方法。將它們傳輸到新機器時,似乎哈希密碼不再有效。

有什麼方法可以將密碼()加密字段傳輸到新服務器,並使它們正常工作?由於

*編輯*

我確實面臨着兼容性問題。我的MySQL版本生成了16字節的哈希密碼,但是我安裝的新版MySQL使用了新的41字節哈希方法。

不過,我已經找到了解決辦法,

我在my.cfg MySQL的配置設置old_passwords=1那麼,MySQL的新版本將使用密碼的散列老。不過,我不建議任何人這樣做,因爲新的mysql服務器的新哈希方法更好更安全。可悲的是,我不能這樣做,因爲我在服務器上有超過100個應用程序

最好的解決方案是由上面的dlyaza提供的。

+0

您是否將密碼複製到數據庫的新實例,並且您是否使用了相同的功能來實現登錄目的? –

+0

該應用程序是相同的,我只是想將所有東西從舊服務器轉移到新的更強大的服務器。我複製了一切(包括passowrds)和一切工作正常,除了密碼...密碼的例子是:* 4ACFE3202A5FF5CF467898FC58AAB1D615029441 –

+0

我已經運行一個查詢(SELECT密碼('測試'))在兩臺服務器上查看結果,結果是: 舊的服務器:378b243e220ca493 新的服務器:* 94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29 –

回答

0

您正面臨MySQL密碼()函數的兼容性問題,請詳細閱讀本文: 6.1.2.4 Password Hashing in MySQL

總之,當從舊服務器移動到新服務器時,MySQL提供old_password()兼容性。因此,對於新的服務器,你可以使用:

SELECT old_password('test')

程序來解決這個問題:

  1. 添加新的申請表作爲password2或任何名稱。
  2. 使用old_password()對新服務器上的用戶進行身份驗證,如果密碼有效,則在第1步創建的字段中保存副本。
  3. 一旦您轉換了所有用戶密碼,則可以使用password()一般。
+0

是的,你是對的...我也發現,有沒有辦法在混淆中使用舊的散列方法設置mysql?因爲我不知道這些功能,所以我無法修改這些應用程序 –