最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決Node.js mysql客戶端不支持認(rèn)證協(xié)議引發(fā)的問題

 更新時(shí)間:2019年06月13日 14:59:56   作者:Way Lau  
這篇文章主要介紹了解決Node.js mysql客戶端不支持認(rèn)證協(xié)議引發(fā)的問題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下

前言

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

本文介紹了出現(xiàn)該問題的原因及解決方案。

報(bào)錯(cuò)信息

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

D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\index.js:17
throw error;
^
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
at Handshake.Sequence._packetToError (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
at Handshake.ErrorPacket (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18)
at Protocol._parsePacket (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Protocol.js:291:23)
at Parser._parsePacket (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Parser.js:433:10)
at Parser.write (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Parser.js:43:10)
at Protocol.write (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Protocol.js:38:16)
at Socket.<anonymous> (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\Connection.js:91:28)
at Socket.<anonymous> (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\Connection.js:525:10)
at Socket.emit (events.js:196:13)
at addChunk (_stream_readable.js:290:12)
--------------------
at Protocol._enqueue (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at Protocol.handshake (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\protocol\Protocol.js:51:23)
at Connection.connect (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\node_modules\mysql\lib\Connection.js:119:18)
at Object.<anonymous> (D:\workspaceGithub\nodejs-book-samples\samples\mysql-demo\index.js:12:12)
at Module._compile (internal/modules/cjs/loader.js:759:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:770:10)
at Module.load (internal/modules/cjs/loader.js:628:32)
at Function.Module._load (internal/modules/cjs/loader.js:555:12)
at Function.Module.runMain (internal/modules/cjs/loader.js:826:10)
at internal/main/run_main_module.js:17:11

出錯(cuò)原因

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

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.12 sec)

解決方法

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

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.12 sec)

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

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

$ node index.js
The result is: RowDataPacket { user_id: 1, username: '老衛(wèi)' }

其中,“RowDataPacket { user_id: 1, username: ‘老衛(wèi)' }”就是數(shù)據(jù)庫查詢的結(jié)果。

源碼

本節(jié)例子可以在https://github.com/waylau/nodejs-book-samples的“mysql-demo”應(yīng)用中找到。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Mysql使用sum()函數(shù)返回null的問題詳解

    Mysql使用sum()函數(shù)返回null的問題詳解

    MySQL的Sum()函數(shù)是用來找出所有記錄的一個(gè)字段的總和,下面這篇文章主要給大家介紹了關(guān)于Mysql使用sum()函數(shù)返回null的問題,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • windows10更換mysql8.0.17詳細(xì)教程

    windows10更換mysql8.0.17詳細(xì)教程

    這篇文章主要為大家介紹了windows10更換mysql8.0.17的詳細(xì)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • mysql啟動(dòng)服務(wù)報(bào)1058錯(cuò)誤的解決方法

    mysql啟動(dòng)服務(wù)報(bào)1058錯(cuò)誤的解決方法

    這篇文章主要介紹了mysql啟動(dòng)服務(wù)報(bào)1058錯(cuò)誤的解決方法,需要的朋友可以參考下
    2014-03-03
  • mysql 如何獲取兩個(gè)集合的交集/差集/并集

    mysql 如何獲取兩個(gè)集合的交集/差集/并集

    這篇文章主要介紹了mysql獲取兩個(gè)集合的交集/差集/并集操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • MySql 快速插入千萬級(jí)大數(shù)據(jù)的方法示例

    MySql 快速插入千萬級(jí)大數(shù)據(jù)的方法示例

    這篇文章主要介紹了MySql 快速插入千萬級(jí)大數(shù)據(jù)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • mysql insert if not exists防止插入重復(fù)記錄的方法

    mysql insert if not exists防止插入重復(fù)記錄的方法

    在 MySQL 中,插入(insert)一條記錄很簡單,但是一些特殊應(yīng)用,在插入記錄前,需要檢查這條記錄是否已經(jīng)存在,只有當(dāng)記錄不存在時(shí)才執(zhí)行插入操作,本文介紹的就是這個(gè)問題的解決方案。
    2011-04-04
  • mysql 按中文字段排序

    mysql 按中文字段排序

    在MySQL中,進(jìn)行中文排序和查找的時(shí)候,對(duì)漢字的排序和查找結(jié)果是錯(cuò)誤的。 這種情況在MySQL的很多版本中都存在。
    2009-01-01
  • MySQL線上死鎖分析實(shí)戰(zhàn)

    MySQL線上死鎖分析實(shí)戰(zhàn)

    這篇文章主要介紹了MySQL線上死鎖分析實(shí)戰(zhàn),文章內(nèi)容分析的很清楚,有對(duì)于這方面不懂的同學(xué)可以研究下
    2021-02-02
  • MySQL開放遠(yuǎn)程連接權(quán)限的兩種方法

    MySQL開放遠(yuǎn)程連接權(quán)限的兩種方法

    在我們使用mysql數(shù)據(jù)庫時(shí),有時(shí)我們的程序與數(shù)據(jù)庫不在同一機(jī)器上,這時(shí)我們需要遠(yuǎn)程訪問數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于MySQL開放遠(yuǎn)程連接權(quán)限的兩種方法,需要的朋友可以參考下
    2022-06-06
  • 面試被問select......for update會(huì)鎖表還是鎖行

    面試被問select......for update會(huì)鎖表還是鎖行

    select … for update 是我們常用的對(duì)行加鎖的一種方式,那么select......for update會(huì)鎖表還是鎖行,本文就詳細(xì)的來介紹一下,感興趣的可以了解一下
    2021-11-11

最新評(píng)論

微山县| 紫阳县| 如皋市| 丰城市| 项城市| 辉南县| 手游| 文昌市| 兴文县| 永川市| 大足县| 和林格尔县| 巴林左旗| 安吉县| 长顺县| 吉木萨尔县| 枣强县| 兴文县| 桂阳县| 略阳县| 蕉岭县| 安徽省| 文成县| 航空| 许昌市| 吉安县| 区。| 武安市| 东丽区| 延庆县| 额济纳旗| 兴隆县| 琼结县| 鄯善县| 新宾| 桑日县| 莱阳市| 宝坻区| 宁乡县| 西盟| 麻城市|