nodejs 連接 mysql 出現(xiàn) Client does not support authentication protocol requested by server; consider ...

阿里云上使用docker運(yùn)行mysql鏡像
MySQL版本:mysql Ver 8.0.19 for Linux on x86_64 (MySQL Community Server - GPL)

在實現(xiàn)網(wǎng)上的一個基于Vue實現(xiàn)的后臺管理系統(tǒng)的環(huán)境時 (https://gitee.com/wBekvam/vueShop-api-server/tree/master),出現(xiàn)報錯,發(fā)現(xiàn)原因是mysql服務(wù)器要求的認(rèn)證插件版本與客戶端不一致造成的。

打開mysql命令行輸入如下命令查看,系統(tǒng)用戶對應(yīng)的認(rèn)證插件:
image.png

可以看到root用戶使用的plugin是caching_sha2_password,mysql官方網(wǎng)站有如下說明:
image.png

意思是說caching_sha2_password是8.0默認(rèn)的認(rèn)證插件,必須使用支持此插件的客戶端版本。

plugin的作用之一就是處理后的密碼格式和長度是不一樣的,類似于使用MD5加密和使用base64加密一樣對于同一個密碼處理后的格式是不一樣的。

解決方法:

我不希望更新本地的客戶端版本,想直接使用原來的環(huán)境來鏈接。

解決方法是將root的plugin改成mysql_native_password。相當(dāng)于降了一級。

mysql官方網(wǎng)站提供了從mysql_old_password升級到mysql_native_password,我們可以仿照這個。官方原文如下:


image.png

這里改成:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

這行代碼有兩層含義,第一:修改root的密碼為'root',摒棄原來的舊密碼。第二:使用mysql_native_password對新密碼進(jìn)行編碼。

修改完成后再用客戶端登陸成功:

補(bǔ)充:

如果在修改插件的時候出現(xiàn)錯誤,可現(xiàn)將插件改為 mysql_old_password,然后再升級成mysql_native_password,方法:


image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容