共計(jì) 1963 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。
本篇文章為大家展示了如何解答 mysql5 改密碼后不能登錄問(wèn)題,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
首先說(shuō)明一下, 下面描述僅限于 Win 系統(tǒng) 其它系統(tǒng)我沒(méi)試過(guò),Mysql 自從 4.1.1 以后修改了用戶密碼的格式, 從 16 位增加到了 41 位, 采用了一種新的驗(yàn)證方法, 但 4.1 以前的客戶端協(xié)議不支持這種方法, 所以造成了不能登臨的后果. 即使密碼正確了不能正常登錄, 提示如下:
#1250 – Client does not support authentication protocol requested by server; consider upgrading MySQL client
在窗口中執(zhí)行:
C:mysqlin mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 1 to server version: 5.0.0-alpha-nt
Type help; or h for help. Type c to clear the buffer.
mysql select password(aa);
+——————————————-+
| password(aa) |
+——————————————-+
| *DEE59C300700AF9B586F9F2A702231C0AC373A13 |
+——————————————-+
1 row in set (0.00 sec)
mysql
從上可以看出 password 的結(jié)果返回了一個(gè)以 * 號(hào)開(kāi)頭的 41 位字符串, 而以前是 16 位的.
Mysql 官方網(wǎng)站給出了二種解決方法
1, 使用新的客戶端 api,
2, 強(qiáng)制服務(wù)器使用舊的密碼方案
我首先嘗試了第一種方法, 從 mysql5.0 中拷貝 libmysql.dll 到 的擴(kuò)展目錄中, 替代了 php 本身附帶的 libmysql.dll, 但結(jié)果令人失望. Php 提示裝入 php_mysql.dll 失敗:PHP Warning: PHP Startup: Unable to load dynamic library c:/php5/ext/php_mysql.dll – 找不到指定的程序。后來(lái)發(fā)現(xiàn)新版的 dll 中缺少了 mysql_drop_db() 這一函數(shù) 只有等 php 或 mysql 出更新的 dll 了.
第一種方法行不通, 只有試試第二種方法,mysql 的官方 FAQ 中說(shuō), 需要加上 -old-password 這一參數(shù), 我首先嘗試 在命令行下起動(dòng) mysql,
c:mysqlin mysqld-nt -old-password
在另一窗口中 運(yùn)行
C:mysqlin mysql -uroot
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 540 to server version: 5.0.0-alpha-nt
Type help; or h for help. Type c to clear the buffer.
mysql select password(mypassword);
+————————+
| password(mypassword) |
+————————+
| 162eebfb6477e5d3 |
+————————+
1 row in set (0.55 sec)
mysql
可以看出 password 的結(jié)果又變成 16 位的了, 可喜的變化
我在 c:my.ini (xp,98, 中如此,2000 中應(yīng)在 c:wint 下) 中的 d 段中加入 set-variable=old-passwords
例:
[mysqld]
basedir=C:/mysql
set-variable=old-passwords
datadir=C:/mysql/data
[WinMySQLadmin]
Server=C:/mysql/bin/mysqld-nt.exe
user=root
password=mypassword
然后在服務(wù)管理器中起動(dòng) mysql
Very Good, 一切正常,
后來(lái)我又發(fā)現(xiàn), 只要在 mysql.user 表中把 password 的字段長(zhǎng)度改成 16 系統(tǒng)就自動(dòng)切換到了 oldpassword 方式, 改成改回 41 后 又自動(dòng)換到了新的驗(yàn)證方式.
在這里提醒一下, 更改 password 方式后, 要重新設(shè)制一下密碼并刷新一下權(quán)限 (或重起 mysql)
上述內(nèi)容就是如何解答 mysql5 改密碼后不能登錄問(wèn)題,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。