Node.js连接MySQL报错ER_NOT_SUPPORTED_AUTH_MODE求助
解决Node.js连接MySQL时ER_NOT_SUPPORTED_AUTH_MODE错误
你遇到的错误是因为MySQL 8.0及以上版本默认使用caching_sha2_password认证协议,而你当前使用的mysql npm模块不支持该协议,以下是两种可行的解决办法:
方法一:修改MySQL用户的认证方式
通过MySQL控制台将目标用户的认证方式改为旧版的mysql_native_password,步骤如下:
- 登录MySQL:
mysql -u root -p - 切换到系统数据库:
USE mysql; - 更新用户认证规则(替换
你的密码为实际密码):ALTER USER 'eladqw'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; - 刷新权限使更改生效:
FLUSH PRIVILEGES;
完成后,原有的Node.js代码即可正常连接数据库。
方法二:改用mysql2模块(推荐)
mysql模块已停止维护,mysql2模块完全兼容新的认证协议,且性能更优,操作步骤:
- 卸载旧模块:
npm uninstall mysql - 安装mysql2:
npm install mysql2 - 修改代码中的模块引入,其余逻辑无需改动:
var mysql = require('mysql2'); var con = mysql.createConnection({ host: "localhost", user: "eladqw", password: "******", port:3306, options: { encrypt: false } }); con.connect(function(err) { if (err) throw err; console.log("Connected!"); });
内容的提问来源于stack exchange,提问作者elad elgali
相关产品推荐
相关产品推荐

