Node.js连接MySQL报错:ER_NOT_SUPPORTED_AUTH_MODE

环境

  • Node.js 使用 ORM 框架 Sequelize​​

  • MySQL 版本号 Ver 14.14 Distrib 5.7.27, for Linux (x86_64)​​,Ubuntu​​ 18.04 APT​​ 命令安装

  • 具体报错信息如下:

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

原因

  • 出现这个错误的原因是 MySQL​​ 所使用的密码加密方式,Sequelize​​ 依赖的 mysql​​ 模块不支持。

解决办法

  • 重新修改 root 的密码,显式的指定密码的加密方式 先使用 mysql -u root -p​​ 登录 MySQL 然后

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
    
  • 重新运行 Node.js​​ 项目,已经可以正确连接上 MySQL