ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的身份验证协议。考虑升级MySQL客户端

Kum*_*mar 1 mysql node.js

在nodejs中使用的mysql问题

const mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '123456789',
  database : 'userdata'
});

connection.connect(function(err) {
  if (err) {
    console.error('error connecting: ' + err);
    return;
  }

 console.log('connected as id ' + connection.threadId);
});
Run Code Online (Sandbox Code Playgroud)

错误:ER_NOT_SUPPORTED_AUTH_MODE:客户端不支持服务器请求的身份验证协议。考虑升级MySQL客户端

小智 8

在任何数据库软件(mysql workbench、datagrip、dbeaver...)中:

首先运行此查询:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Run Code Online (Sandbox Code Playgroud)

其次,如果问题仍然存在,请运行以下查询:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; 
Run Code Online (Sandbox Code Playgroud)

结合并运行这两个查询分别对我来说适用于 Dockerize mysql。


tam*_*n s 7

最佳解决方案试试这个它会解决:

您使用“mysql安装程序”安装了mysql服务器

1)open -> "mysql intsaller"

2)press reconfig mysql server

3)select left side "authentication method tab"

4)select radio button -->use legacy authentication method

5)now stop and restart the db 
Run Code Online (Sandbox Code Playgroud)

谢谢!


小智 5

有同样的问题。

安装MySQL Workbench

执行此查询:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456789';在MySQL Workbench中

回到Node.js,然后尝试再次运行该文件。它应该起作用,至少对我有用。