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

Posted

技术标签:

【中文标题】Node JS和mysql不连接(客户端不支持服务器请求的认证协议考虑升级mysql客户端)【英文标题】:Node JS and mysql not connecting (client does not support authentication protocol requested by server consider upgrading mysql client) 【发布时间】:2019-04-16 09:46:54 【问题描述】:

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

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

npm install mysql

安装 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));
);

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

node index.js

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

error image

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

感谢任何形式的帮助

【问题讨论】:

【参考方案1】:

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

运行

npm install mysql2

那么

import mysql from "mysql2";

const mysql = require("mysql2")

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

【讨论】:

这为我解决了,我使用 yarn 而不是 npm: "yarn add mysql2 --save"【参考方案2】:

使用新的 mysql2 库而不是 mysql 以便使用 MySQL 8.0 的新身份验证方法

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

【讨论】:

请同时提及 NODE JS 的版本以及 MySql 为我运行节点 12.13.0 和 mysql 8.0.22 工作【参考方案3】:

代替

mysqlConnection.connect((err) => 

使用

connection.connect((err) => 

if(!err)
    console.log('Database is connected!');
else
    console.log('Database not connected! : '+ JSON.stringify(err, undefined,2));
);

[Here the is tutorials reference for the code]1

对于你的mysql错误:

在 MYSQL Workbench 中执行以下查询:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'

完成后尝试使用节点连接。

【讨论】:

它现在给我另一个错误:客户端不支持服务器请求的身份验证协议考虑升级mysql客户端 你能解释一下这条线是做什么的吗? ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password' @ZOLDIK 重置您用于连接节点服务器和 MySQL 的 MySQL 根密码,谈论连接字符串...【参考方案4】:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourRootPassword';
-- or
CREATE USER 'foo'@'%' IDENTIFIED WITH mysql_native_password BY 'bar';
-- then
FLUSH PRIVILEGES;

【讨论】:

以上是关于Node JS和mysql不连接(客户端不支持服务器请求的认证协议考虑升级mysql客户端)的主要内容,如果未能解决你的问题,请参考以下文章

在 node.js 中的客户端和服务器 js 文件之间共享 mysql 连接

socket.io/node.js检测服务器是否已关闭

Node.js知识点整理之----简介

node.js中mysql连接池的使用

node.js mysql错误:ECONNREFUSED

Node.js能解决什么问题?