【问题标题】:I cannot connect to mysql database using node.js我无法使用 node.js 连接到 mysql 数据库
【发布时间】:2020-11-23 07:42:28
【问题描述】:

我是数据库的初学者。 我正在使用 localhost(127.0.0.1) 和端口 9090。 我成功创建了 mysql 数据库,在 Windows 10 命令提示符和 MySQL Workbench 中运行/使用它。

但是当我尝试使用 node.js 运行它时,我无法连接到服务器。

下面是我尝试在 windows 命令行中运行的 index.js 文件。

var mysql = require('mysql');
var client = mysql.createConnection({
    user:'root',
    password:'password',
});
client.query('USE mydb');
client.query('SELECT * FROM PRODUCTS',function(error, result, fields){
if(error){
    console.log(error);
} else{
    console.log(result);
}
});

它会导致这个错误。

D:\Coding\VSCode\nodejs>node index.js

Error: connect ECONNREFUSED 127.0.0.1:3306
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1146:16)
--------------------
at Protocol._enqueue (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at Protocol.handshake (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\protocol\Protocol.js:51:23)
at Connection.connect (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\Connection.js:116:18)
at Connection._implyConnect (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\Connection.js:454:10)
at Connection.query (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\Connection.js:196:8)
at Object.<anonymous> (D:\Coding\VSCode\nodejs\index.js:10:8)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14) {
errno: -4078,
code: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 3306,
fatal: true
}

我在这个阶段不知道我不知道什么。 我试图像这样更改 createConnection() 函数中的端口

var client = mysql.createConnection({
user:'root',
password:'password',
port: '9090'
});

然后我得到这个错误。

D:\Coding\VSCode\nodejs>node index.js

Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by 
server; consider upgrading MySQL client
at Handshake.Sequence._packetToError 
(D:\Coding\VSCode\nodejs\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
at Handshake.ErrorPacket 
(D:\Coding\VSCode\nodejs\node_modules\mysql\lib\protocol\sequences\Handshake.js:123:18)
at Protocol._parsePacket (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\protocol\Protocol.js:291:23)
at Parser._parsePacket (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\protocol\Parser.js:433:10)
at Parser.write (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\protocol\Parser.js:43:10)
at Protocol.write (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\protocol\Protocol.js:38:16)
at Socket.<anonymous> (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\Connection.js:88:28)
at Socket.<anonymous> (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\Connection.js:526:10)
at Socket.emit (events.js:315:20)
at addChunk (_stream_readable.js:309:12)
--------------------
at Protocol._enqueue (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at Protocol.handshake (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\protocol\Protocol.js:51:23)
at Connection.connect (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\Connection.js:116:18)
at Connection._implyConnect (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\Connection.js:454:10)
at Connection.query (D:\Coding\VSCode\nodejs\node_modules\mysql\lib\Connection.js:196:8)
at Object.<anonymous> (D:\Coding\VSCode\nodejs\index.js:10:8)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14) {
code: 'ER_NOT_SUPPORTED_AUTH_MODE',
errno: 1251,
sqlMessage: 'Client does not support authentication protocol requested by server; consider upgrading 
MySQL client',
sqlState: '08004',
fatal: true
}

【问题讨论】:

    标签: mysql node.js database


    【解决方案1】:

    1.打开你的windows终端并登录: mysql -uroot -p (然后输入您的密码)

    1. use mysql;

    2. update user set authentication_string=password(''), plugin='mysql_native_password' where user='root';

    4 重启你的mysql数据库:sudo service mysql restart

    【讨论】:

    【解决方案2】:

    在 MySQL Workbench 中执行此操作解决了问题。

     ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password 
     BY 'YourRootPassword';
    
     FLUSH PRIVILEGES;
    

    【讨论】:

      猜你喜欢
      • 2016-03-22
      • 2014-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 2018-02-06
      • 2015-03-09
      相关资源
      最近更新 更多