![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 ㄚ宏 ![]()
![]() |
A主機mysql版本為5.0 B主機mysql版本為5.2.6 A主機 mysqldump 出資料後 再匯入至B主機內 資料上大至沒什麼問題,但發現password欄位是透過password()編碼過後才寫入資料,此時user在系統登入時發現password不符情況 這邊想請教的是資料庫在還原時password()編碼的資料有需要特別處理嗎? 因為過去曾經有過 將linux上的mysql dump出來再匯入windows mysql中,同樣也是發生user在登入系統時password不符情況 這次兩台主機都同為linux依然出現這樣的問題!! 是mysql版本的問題嗎??os也有相關嗎?? 請高手們解說一下!!謝謝
搜尋相關Tags的文章:
[ password() ] ,
本篇文章發表於2015-10-14 17:04 |
1樓
最有價值解答
浩瀚星空 ![]() ![]() |
早期的password的確編碼模式是不一樣的。
一般人解決的方式是換掉或是放棄掉原來的mysql password函數 另外一個就是舊新編碼同步檢查 如 (password = password('123') OR password = old_password('123')) mysql內有提供對應舊編碼的函數為old_password() 要不然就是直接去宣告mysql一律採用舊編碼。 這樣password()就會用舊編碼來運行 我猜測你因為移了新主機。舊主機可能已經有宣告好mysql使用舊編碼。但新主機沒有。 所以就會發生這樣的事。 一般我會建議你,還是不要再用mysql的password。可以的話趁早換其它方式處理。 如真不行的話。宣告mysql使用舊編碼的機制其實很不太好。 下次如果還要換機,這問題又要重來一次。 而且mysql為何要更換編碼是有其意義的。 建議你改一下程式,修正sql語法為(password = password('123') OR password = old_password('123')) 但最好還是改用其它的記錄方式,雖然這樣可能會造成用戶端的問題。 我以前也曾經替一個客戶做更換。 就是客戶登入時,先新舊編碼比對。會多了一個ch_pass欄位。 當ch_pass為0時。(也就是還未更換過密碼)。就會強制轉頁,用一個名義叫客戶重新更換密碼。 更換後就會採用新制編碼。日後就無需轉換。 這樣就可以慢慢的將密碼給更換掉了。
本篇文章回覆於2015-10-16 10:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |