首页 > 解决方案 > “客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端”即使在降级到 mysql@5.7 后

问题描述

我最初在 mysql 8.0 上,这给了我错误

ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端

尝试运行我的服务器时。我在多个来源看到降级到 mysql@5.7 会解决问题,因为 5.7 使用本机密码身份验证,但降级到早期版本后仍然存在相同的错误。是否有任何其他已知原因导致错误仍然存​​在?

这是我的配置文件:

config.js

// import dependencies
const util = require("util");
const mysql = require("mysql");

// import environment variables
const env = {
    env: process.env.NODE_ENV,
    host: process.env.DB_HOST,
    database: process.env.DB_NAME,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD
}

const database = mysql.createConnection({
  host: env.host,
  database: env.database,
  user: env.user,
  password: env.password
});

database.connect(err => {
  if (err) {
        console.log("Connection " + err);
  } else {
        console.log(`Connection Success: You are now connected to the ${env.env} database`);
  }
});

// promisify all database queries
database.query = util.promisify(database.query);

// export database
module.exports = database;

标签: homebrewmysql-5.7mysql-8.0

解决方案


MySQL 8.0 引入了许多客户端不理解的默认 SHA256 加密。您有很多选择,最简单的方法是使用较旧的 MySQL 本机密码(请参阅https://mysqlserverteam.com/upgrading-to-mysql-8-0-default-authentication-plugin-considerations/)身份验证。更改帐户以使用较旧的身份验证,您的客户端连接器会很高兴。


推荐阅读