這可能是以前問過的。用戶的一些密碼以16位格式存儲。 Mysql已升級到5.5,但表中的密碼仍保持16位格式。將Mysql舊密碼升級到新版本
辦法告訴你的MySQL是用什麼密碼方案下面運行此查詢,它會列出每個用戶的密碼長度(16或41):
mysql> SELECT `User`, `Host`, Length(`Password`) FROM mysql.user;
+—————-+—————–+——————–+
| User | Host | Length(`Password`) |
+—————-+—————–+——————–+
| root | localhost | 16 |
| mary | 20.20.3.2 | 16 |
| fred | localhost | 16 |
| sally | 64.56.139.194 | 16 |
| fschmidt | 64.56.139.194 | 16 |
…
要更改用戶具有完全相同相同的密碼,而是存儲在新的較長的格式,我們可以這樣做:
mysql> SET SESSION old_passwords=FALSE;
mysql> SET PASSWORD FOR ‘visitlogger’@’64.55.129.%’=PASSWORD(‘ ‘);
mysql> flush privileges;
現在,我們可以驗證的變化:
mysql> SELECT `User`, `Host`, Length(`Password`) FROM mysql.user;
+—————-+—————–+——————–+
| User | Host | Length(`Password`) |
+—————-+—————–+——————–+
| root | localhost | 41 |
| mary | 20.20.3.2 | 41 |
| fred | localhost | 41 |
| sally | 64.56.139.194 | 41 |
| fschmidt | 64.56.139.194 | 41 |
+—————-+—————–+——————–+
任何人都可以幫助我找出一種方法來自動做出更改。對於我的所有用戶手動執行此操作將會很痛苦。謝謝!
我不明白什麼密碼長度和mysql版本必須相互處理 – 2013-12-10 03:05:41
@Dagon前段時間(如年)MySQL的密碼散列系統已從產生16位十六進制散列的系統更改爲一個這產生了41位十六進制數的版本。我認爲這一切的痛苦早已消失。看起來不是。 – 2013-12-10 03:09:07