【问题标题】:errno: 1251, sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL clienterrno: 1251, sqlMessage: '客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端
【发布时间】:2018-12-11 09:03:44
【问题描述】:

我正在 nodejs 中创建简单的 api 项目。

为此,我安装了 8.0.11 版本的 mySql 工作台。 我已经创建了配置文件、dbConnection.js 文件并在 dbconnection.js 文件中编写了以下代码:

var mysql = require('mysql');
var path = require('path');
var config = require(path.resolve('./', 'config'))

var connection = mysql.createConnection({
    host: config.databaseHost,
    user: config.databaseUser,
    password: config.databasePassword,
    database: config.databaseDatabaseName,
    multipleStatements: true
});

connection.connect(function (err) {
    if (err) {
        console.log('Error connecting to Database',err);
        return;
    }
    console.log('Connection established');
});
module.exports = connection;

我正面临以下错误:

代码:'ER_NOT_SUPPORTED_AUTH_MODE', 错误号:1251, sqlMessage: '客户端不支持服务器请求的认证协议;考虑升级 MySQL 客户端', sqlState: '08004', 致命:是的

注意:我的 congif 尽可能简单,用户 = root,密码 = root,主机 = localhost。

【问题讨论】:

    标签: mysql node.js express mysql-workbench


    【解决方案1】:

    一旦您在 MySQL 连接函数中建立主机、root、密码和等。将以下内容粘贴到您尝试在工作台中连接的数据库中:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_current_password';
    

    回到终端,再次运行节点<file name.js>

    【讨论】:

    • 此解决方案是解决问题的最快和最简单的方法
    【解决方案2】:

    打开终端并登录:

    mysql -u root -p
    

    (然后输入您的密码)

    之后:

    USE mysql;
    
    UPDATE user SET authentication_string=password(''), plugin='mysql_native_password' WHERE user='root';
    

    最后重要的是重置mysql服务:

    sudo service mysql restart
    

    【讨论】:

      【解决方案3】:

      您必须重新配置 MySQL 服务器。请按照以下步骤操作。

      1)打开mysql intsaller

      2)点击Reconfigure(到左侧的mysql服务器)

      3) 转到身份验证方法标签(点击下一步两次。)

      4) 然后选择单选按钮Use Legacy Authentication Method。点击下一步。

      5) 输入您的密码。点击检查。转到应用配置(点击下一步两次)。

      6) 点击执行。然后完成。

      就是这样。享受黑客攻击!

      【讨论】:

        【解决方案4】:
        ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'current password';
        

        【讨论】:

          【解决方案5】:

          我也遇到了同样的问题。它不适用于root用户。我创建了一个新用户(使用 mySQL 工作台)并授予新用户权限。然后我尝试了新用户,它工作正常。 see workbench settings

          【讨论】:

            【解决方案6】:

            安装mysql2而不是mysql

            npm install mysql2
            

            然后将这个添加到 index.js

            const mysql = require('mysql2')
            

            【讨论】:

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