Node JS和mysql连接不上(客户端不支持服务器请求的认证协议考虑升级mysql客户端)

joh*_*nny 5 mysql database database-connection node.js npm

我正在尝试将我的 NodeJs 应用程序与 mysql 数据库连接,但由于某种原因它没有连接。

我确实像这样安装了 mysql npm(在命令行中输入):

npm install mysql
Run Code Online (Sandbox Code Playgroud)

安装 mysql npm 后,我创建了一个 index.js 文件,并在该文件中尝试与我的数据库建立连接。

这是我的 index.js 文件中与 mysql 建立连接的代码:

const mysql      = require('mysql');

var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    port     : '3306',
    password : 'test12310',
    database : 'fys'
});


connection.connect((err) => {
    if(!err)
        console.log('Database is geconnect!');
    else
        console.log('Database connectie niet gelukt!  : '+ JSON.stringify(err, undefined,2));
});
Run Code Online (Sandbox Code Playgroud)

然后我尝试运行代码,看看与 mysql 的连接是否有效。我在命令行中输入:

node index.js
Run Code Online (Sandbox Code Playgroud)

这是我在命令提示符中收到的错误消息:

错误图像

有谁知道我如何修复此错误并在 nodejs 中与我的 mysqldatabase 建立连接?

任何形式的帮助表示赞赏

Seb*_*spc 8

使用新的mysql2库代替mysql以使用 MySQL 8.0 的新身份验证方法

~ 在节点版本 13.6.0 和 MySQL 8.0.21 中测试


Say*_*Ali 6

代替

mysqlConnection.connect((err) => {
Run Code Online (Sandbox Code Playgroud)

使用

connection.connect((err) => {

if(!err)
    console.log('Database is connected!');
else
    console.log('Database not connected! : '+ JSON.stringify(err, undefined,2));
});
Run Code Online (Sandbox Code Playgroud)

[这里是代码的教程参考] 1

对于您的 mysql 错误:

在 MYSQL Workbench 中执行以下查询:

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

执行此操作后尝试使用节点进行连接。


cri*_*ari 6

我在 mysql 库 中遇到了同样的问题,我通过更改为库来修复该错误,mysql2 我建议您安装 mysql2

跑

npm install mysql2
Run Code Online (Sandbox Code Playgroud)

然后

import mysql from "mysql2";
Run Code Online (Sandbox Code Playgroud)

或者

const mysql = require("mysql2")
Run Code Online (Sandbox Code Playgroud)

我希望这对你有用!!祝你好运