2021-07-02Node連接mysql,報(bào)錯(cuò)Client does not support authentication protocol...

報(bào)錯(cuò)語句和原因:

報(bào)錯(cuò)語句:

Client does not support authentication protocol requested by server
//NodeJS MySQL客戶端不支持身份驗(yàn)證協(xié)議

原因:MySql 8.0換了新的身份驗(yàn)證插件(caching_sha2_password), 舊的身份驗(yàn)證插件為(mysql_native_password)。
以默認(rèn)創(chuàng)建的用戶和密碼都是這個(gè)加密方式。而npm包里的mysql模塊還是使用原來的mysql_native_password加密方式,兩者不互通,連接會(huì)報(bào)錯(cuò)。

解決辦法:

將用戶密碼從caching_sha2_password加密方式改回的 mysql_native_password加密方式。

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

如上,將root用戶的密碼123456789的認(rèn)證修改成mysql_native_password,之后再連接mysql就會(huì)成功。
然后刷新緩存:

flush privileges;

注意點(diǎn)

1,@后面的host要和賬號(hào)的host對(duì)應(yīng),比如我的賬號(hào)host是%,語句就要改成%。


ALTER USER 'kason'@'%' IDENTIFIED WITH mysql_native_password BY '123456789';

2,報(bào)錯(cuò):ERROR 1396 (HY000): Operation ALTER USER failed for 'xxx'@'xxx'
其實(shí)沒有進(jìn)入mysql這個(gè)庫,就去執(zhí)行語句,自然是報(bào)錯(cuò)了。
順序如下:
1,先進(jìn)入mysql這個(gè)數(shù)據(jù)庫。
2,執(zhí)行改密碼驗(yàn)證方式(建議和原密碼一致,會(huì)一起修改掉密碼)。
3,刷新緩存。

use mysql;

ALTER USER 'kason'@'%' IDENTIFIED WITH mysql_native_password BY '123456789';

flush privileges;

親測(cè)完美解決,撒花★,°:.☆( ̄▽ ̄)/$:.°★* 。。*

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

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

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