繁体   English   中英

errno: 1251, sqlMessage: '客户端不支持服务器请求的认证协议; 考虑升级MySQL客户端

[英]errno: 1251, sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading MySQL client

我在 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;

我面临以下错误:

code: 'ER_NOT_SUPPORTED_AUTH_MODE', errno: 1251, sqlMessage: '客户端不支持服务器请求的身份验证协议; 考虑升级 MySQL 客户端', sqlState: '08004', fatal: true

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

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

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

返回终端并再次运行 node <file name.js>

打开终端并登录:

mysql -u root -p

(然后输入您的密码)

在那之后:

USE mysql;

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

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

sudo service mysql restart

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

1)打开mysql intsaller

2)点击重新配置(左侧mysql服务器)

3)转到身份验证方法选项卡(通过单击下一步两次。)

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

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

6)点击执行 然后完成。

而已。 享受黑客攻击!

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

在使用 mysql 的节点 v17 中得到 ERROR 1251

❌ // didn't worked: errno 1251 ER_NOT_SUPPORTED_AUTH_MODE

import mysql from 'mysql';

尝试从节点中删除mysql并将其替换为mysql2

yarn remove 'mysql'
yarn add 'mysql2'
✅  import mysql2 from 'mysql2';

这为我解决了这个问题!

安装 mysql2 而不是 mysql

npm install mysql2

然后将其添加到 index.js

const mysql = require('mysql2')

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

尝试删除mysql

yarn remove mysql
yarn add mysql2
import mysql2 from "mysql2"

这对我来说是固定的问题。 代码:

"ER_NOT_SUPPORTED_AUTH_MODE" errno: 1251 fatal: true sqlMessage: "Client does not support authentication protocol by server; consider upgrade MySQL client" sqlState: "08004"

如果您的密码不是 root,请尝试使用您的密码和用户名 root 尝试使用您的密码。 更改用户 'root'@'localhost' 通过 'root' 识别 mysql_native_password;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM