【问题标题】:Node JS and mysql not connecting (client does not support authentication protocol requested by server consider upgrading mysql client)Node JS和mysql不连接(客户端不支持服务器请求的认证协议考虑升级mysql客户端)
【发布时间】: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 建立连接?

感谢任何形式的帮助

【问题讨论】:

    标签: mysql node.js database npm database-connection


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-10
      • 2019-03-19
      • 2018-10-29
      • 2018-11-03
      • 2018-12-11
      相关资源
      最近更新 更多