Node.js连接不上MySQL数据库

本文解决了一个关于使用Node.js连接高版本MySQL时出现的认证协议不支持错误。问题源于MySQL更新了加密方式,而Node.js客户端尚未支持。通过更改MySQL的密码保存方式,具体操作包括在命令行中执行特定的SQL语句来修改用户认证方式,最终实现了Node.js与MySQL的正常连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
    at Handshake.Sequence._packetToError (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\protocol\sequences\Sequence.js:47:14)
    at Handshake.ErrorPacket (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\protocol\sequences\Handshake.js:123:18)
    at Protocol._parsePacket (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\protocol\Protocol.js:291:23)
    at Parser._parsePacket (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\protocol\Parser.js:433:10)
    at Parser.write (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\protocol\Parser.js:43:10)
    at Protocol.write (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\protocol\Protocol.js:38:16)
    at Socket.<anonymous> (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\Connection.js:91:28)
    at Socket.<anonymous> (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\Connection.js:525:10)onnection.js:525:10)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    --------------------                                                                 otocol\Protocol.js:144:48)
    at Protocol._enqueue (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\prrotocol\Protocol.js:51:23)otocol\Protocol.js:144:48)                                                               onnection.js:119:18)
    at Protocol.handshake (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\protocol\Protocol.js:51:23)
    at Connection.connect (E:\代码练习\node\blog-1\node_modules\_mysql@2.17.1@mysql\lib\Connection.js:119:18)
    at Object.<anonymous> (e:\代码练习\node\blog-1\src\db\mysql.js:10:5)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)

报错原因

因为mysql版本较高,最新的加密方式node还不支持,只能修改mysql的密码保存方式

解决方法

1、打开cmd,切换到mysql目录下的bin文件夹下,我的是切换到
C:\web\mysql-8.0.16\bin
2、然后输入命令mysql -u root -p,输入mysql密码,目的是连接到mysql
3、连接成功后输入命令
ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘1234’;//这个1234就是你自己的数据库密码,然后在node中重新连接就可以
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值