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客户端)的主要内容,如果未能解决你的问题,请参考以下文章