You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:12:32