首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我无法使用node.js连接到mysql数据库。

我无法使用node.js连接到mysql数据库。
EN

Stack Overflow用户
提问于 2020-11-23 15:42:29
回答 2查看 429关注 0票数 1

我对数据库完全是个初学者。我使用端口为9090的localhost(127.0.0.1)。我成功地创建了mysql数据库,并在Windows10命令提示符和MySQL工作台中运行/使用它。

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

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

代码语言:javascript
复制
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);
}
});

这就导致了这个错误。

代码语言:javascript
复制
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()函数中更改端口,如下所示

代码语言:javascript
复制
var client = mysql.createConnection({
user:'root',
password:'password',
port: '9090'
});

然后我得到了这个错误。

代码语言:javascript
复制
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
}
EN

回答 2

Stack Overflow用户

发布于 2020-11-23 15:55:02

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

  1. use mysql;

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

4重新启动mysql db:sudo service mysql restart

票数 1
EN

Stack Overflow用户

发布于 2020-11-23 16:32:02

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

代码语言:javascript
复制
 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password 
 BY 'YourRootPassword';

 FLUSH PRIVILEGES;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64964279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档