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

MySQL 8.0与Node.js连接失败:客户端不支持服务器认证协议求助

解决MySQL 8.0与Node.js客户端认证协议不兼容问题

嘿,这个坑我刚踩过!你遇到的问题是MySQL 8.0和旧版Node.js MySQL客户端的认证协议不兼容导致的——MySQL 8.0默认启用了更安全的caching_sha2_password身份验证插件,但你用的mysql npm包(旧版本)只支持传统的mysql_native_password,所以才会抛出「Client does not support authentication protocol requested by server」这个错误。

给你两种靠谱的解决办法,选一种就行:

方法一:升级到支持新认证的MySQL客户端包

原来的mysql npm包已经停止维护了,官方推荐用mysql2,它完美支持MySQL 8.0的新认证机制,步骤很简单:

  • 先卸载旧包:
    npm uninstall mysql
    
  • 安装mysql2:
    npm install mysql2
    
  • 修改你的代码,把导入模块的部分换成mysql2,其余逻辑不用改:
    var mysql = require('mysql2');
    var con = mysql.createConnection({
      host: "localhost",
      user: "root",
      password: "password"
    });
    
    con.connect(function(err) {
      if (err) throw err;
      console.log("Connected!");
    });
    

方法二:修改MySQL用户的认证方式为旧版(适合不想换包的场景)

如果你不想更换客户端包,可以手动把root用户的认证方式改回传统的mysql_native_password:

  1. 打开MySQL命令行(或者用Workbench),用root账号登录
  2. 执行以下SQL语句(记得把'password'换成你实际的root密码):
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    FLUSH PRIVILEGES;
    
  3. 重启你的Node.js服务,再运行代码就能正常连接了。

内容的提问来源于stack exchange,提问作者Pig

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:36:09