2011-08-22 22 views
0

我們將我們的數據庫遷移到了一臺新的服務器,不幸的是,這個服務器的默認設置是old_passwords = 1。MySQL可以處理混合舊式和新式的密碼

因爲我們使用PHP的PASSWORD()來實現某些功能,所以這些應用程序的更新密碼以及新創建的mysql root和其他用戶都使用舊式密碼。

我想回到新的樣式密碼,以便遷移前的用戶帳戶再次運行,但我也希望新創建的用戶能夠仍然登錄。

閱讀http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html似乎> 4.1服務器將處理舊式和新式的密碼,但我想確認一下,在我從my.cnf中刪除該行之前,我正確讀取了這些信息,然後重新啓動服務器和許多麻煩

+0

只是爲了澄清,現在創建的密碼是4.1之前的16字節密碼,並且您希望使用41字節作爲默認密碼,但是如果關閉old_password開關,mysql是否仍然會對舊用戶進行身份驗證? – Ali

+0

是的,所以在遷移後創建的那些將會工作,遷移之前的那些現在會被破壞的 – Maarten

回答

0

從最後我讀這是相當清楚的:

4.1及更高版本的客戶端可以有短或長哈希的賬戶。

但是隻要確保所有的客戶端都是4.1或更高版本。否則,如果4.1之前的用戶更改密碼,他們將被鎖定。

沒有--old-passwords選項,不良場景 以下是可能的:

  • 舊客戶端連接到具有短密碼哈希值的賬戶。

  • 客戶端更改自己的密碼。如果沒有--old-passwords,這個 會導致賬戶擁有很長的密碼哈希。

  • 下一次舊的客戶端試圖連接到該帳戶,它 不能,因爲該帳戶出現問題,需要在認證期間 新的哈希機制的長密碼哈希值。 (一旦帳戶在用戶表中的 長密碼哈希值,只有4.1和更高版本客戶端可以 它進行身份驗證,因爲前4.1客戶端不理解長 哈希值。)

相關問題