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

Sails 1.0连接MySQL 8.0遇ER_NOT_SUPPORTED_AUTH_MODE错误求助

解决SailsJS连接MySQL时的ER_NOT_SUPPORTED_AUTH_MODE错误

这个问题我之前帮不少开发者解决过,本质是MySQL 8.0+默认启用了caching_sha2_password认证机制,但你当前使用的sails-mysql依赖的旧版mysql客户端库不支持这个新协议。下面给你两个靠谱的解决思路:

方案一:修改MySQL用户的认证方式(快速临时解决)

直接把你的root用户认证方式改回旧版的mysql_native_password,适配现有客户端:

  • 打开终端,登录MySQL控制台:
    mysql -u root -p
    
    输入你的root密码(这里是root)回车进入。
  • 执行以下SQL命令修改用户认证:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
    FLUSH PRIVILEGES;
    
    注意:如果你的MySQL用户允许远程访问,把localhost换成%即可。
  • 退出MySQL控制台,重新运行sails lift,应该就能正常连接了。

方案二:升级Sails的MySQL适配器(长期推荐方案)

改用支持新认证机制的sails-mysql2适配器,适配MySQL 8.0+的特性:

  • 先卸载旧的适配器:
    npm uninstall sails-mysql
    
  • 安装新版适配器:
    npm install sails-mysql2
    
  • 修改config/datastores.js里的配置,替换适配器:
    default: {
      adapter: require('sails-mysql2'),
      url: 'mysql://root:root@localhost/ventas'
    },
    
  • 重新启动sails lift,这个方案能从根本上解决兼容性问题,后续MySQL版本升级也更省心。

额外注意事项

  • 确保你的MySQL服务是正常运行的,并且ventas数据库已经存在。
  • 如果是远程MySQL服务器,要确认防火墙已经开放3306端口,且用户拥有对应主机的访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:00:54