台灣最大程式設計社群網站
線上人數
1046
 
會員總數:246713
討論主題:190131
歡迎您免費加入會員
討論區列表 >> MySQL >> 資料庫還原password()編碼欄位資料有問題!!
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
資料庫還原password()編碼欄位資料有問題!!
價值 : 20 QP  點閱數:1384 回應數:1
樓主

ㄚ宏
初學者
36 56
433 57
發送站內信

目前有兩台主機

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樓
最有價值解答

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
早期的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
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.