解決Node.js mysql模塊不支持MySQL8的認(rèn)證協(xié)議(ER_NOT_SUPPORTED_AUTH_MODE)

前言

MySQL模塊(項目地址為https://github.com/mysqljs/mysql)是一個開源的、JavaScript編寫的MySQL驅(qū)動,可以在Node.js應(yīng)用中來操作MySQL。但在使用過程中,出現(xiàn)了“ER_NOT_SUPPORTED_AUTH_MODE”問題。

首先安裝MySQL模塊

npm install mysql --save

安裝

有個錯,不知道是啥,反正裝上了,繼續(xù)

報錯信息

當(dāng)我試圖使用mysql模塊來連接MySQL 8時,出現(xiàn)了如下錯誤信息:

報錯

出錯原因

導(dǎo)致這個錯誤的原因是,目前,最新的mysql模塊并未完全支持MySQL 8的“caching_sha2_password”加密方式,而“caching_sha2_password”在MySQL 8中是默認(rèn)的加密方式。因此,下面的方式命令是默認(rèn)已經(jīng)使用了“caching_sha2_password”加密方式,該賬號、密碼無法在mysql模塊中使用。

解決方法

解決方法是從新修改用戶root的密碼,并指定mysql模塊能夠支持的加密方式:

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

> OK

> 時間: 0.558s

上述語句,顯示指定了使用“mysql_native_password”的加密方式。這種方式是在mysql模塊能夠支持。

再此運行應(yīng)用,可以看到如下的控制臺輸出信息:

$ node test.js

The solution is:? 2

The solution is:? 2是正確的執(zhí)行結(jié)果。

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

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

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