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

Docker环境下Node-RED连接MySQL8.0报ER_NOT_SUPPORTED_AUTH_MODE错误如何解决

问题根因

你遇到的报错是MySQL 8.x版本的典型兼容性问题:

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client

MySQL 8.0起默认启用caching_sha2_password作为身份认证插件,而Node-RED v2.1.3内置的MySQL节点、旧版Grafana MySQL客户端均不支持该认证协议,仅兼容旧版mysql_native_password认证方式。你可以通过PuTTY正常连接是因为本地使用的MySQL客户端已经适配了新版认证协议。

修复步骤

方式1:修改数据库用户认证插件(推荐,不影响全局配置)

  • 进入MySQL容器命令行
    执行宿主机命令:docker exec -it <你的MySQL容器名称> mysql -u root -p
    输入MySQL root密码进入数据库交互界面。
  • 修改对应用户的认证规则
    执行SQL语句,将你用于Node-RED、Grafana连接的用户认证方式改为旧版协议:
    ALTER USER '你的数据库用户名'@'%' IDENTIFIED WITH mysql_native_password BY '你的数据库用户密码';
    
    如果你直接使用root用户连接,执行:
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的root用户密码';
    
  • 刷新权限生效
    执行SQL语句:FLUSH PRIVILEGES;
  • 验证修改结果
    执行SQL语句查看用户认证插件:
    SELECT user, host, plugin FROM mysql.user WHERE user='你使用的连接用户名';
    
    返回结果中plugin字段显示为mysql_native_password即为修改成功。
  • 重启Node-RED、Grafana容器后重新尝试连接即可。

方式2:修改MySQL全局默认认证插件

如果你需要所有用户默认使用旧版认证协议,可以修改MySQL配置:

  • 进入MySQL容器的/etc/mysql/my.cnf(或对应持久化的配置文件),在[mysqld]段落下添加配置:
    default_authentication_plugin=mysql_native_password
    
  • 重启MySQL容器后,所有新创建的用户默认使用mysql_native_password认证,已创建的用户需要重新执行ALTER USER语句修改。
配置校验

你提供的Node-RED配置仅需要确认以下信息即可,无需额外调整:

  • 主机地址:如果Node-RED和MySQL在同一个Docker自定义网络下,填MySQL容器名即可;如果是跨网络访问,填虚拟机公网IP20.107.194.152
  • 端口:确认填3306,且MySQL容器的3306端口已正确映射到宿主机、Azure安全组已开放3306端口入站规则
  • 用户名、密码和数据库名称和你实际配置一致。

Node-red配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 11:06:05