gpt4 book ai didi

mysql - 无法将nodejs连接到mysql

转载 作者:行者123 更新时间:2023-11-29 03:52:13 27 4
gpt4 key购买 nike

我在 Windows 上运行 Node.js 0.10.31,在 192.168.2.150 上运行的 virtual-box ubuntu 上运行我的 mySQL 5.5.35。现在为了将 Node js 连接到 mysql,我使用了以下连接器:

https://github.com/felixge/node-mysql

代码:

var mysql = require('mysql');
var connection = mysql.createConnection({
host : '192.168.2.150',
user : 'root',
password : '*****',
port : 3306
});

connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}

console.log('connected as id ' + connection.threadId);
});


connection.query('SELECT 1', function(err, rows) {
// connected! (unless `err` is set)
console.log(err, rows);
});

my.cnf文件中绑定(bind)地址为0.0.0.0。此外,在用户表中,我已将所有数据库的权限授予 root@192.168.2.150。但是,我仍然无法从 Node 连接到 mysql,并且出现以下错误。我什至尝试过 Node js 0.8.2 版本,但仍然无法正常工作。谁能指出错误?

错误:

 error connecting: Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'
192.168.2.99' (using password: YES)
at Handshake.Sequence._packetToError (G:\Coding_Zone\NodeJs_Work\Output\node
_modules\mysql\lib\protocol\sequences\Sequence.js:48:14)
at Handshake.ErrorPacket (G:\Coding_Zone\NodeJs_Work\Output\node_modules\mys
ql\lib\protocol\sequences\Handshake.js:101:18)
at Protocol._parsePacket (G:\Coding_Zone\NodeJs_Work\Output\node_modules\mys
ql\lib\protocol\Protocol.js:271:23)
at Parser.write (G:\Coding_Zone\NodeJs_Work\Output\node_modules\mysql\lib\pr
otocol\Parser.js:77:12)
at Protocol.write (G:\Coding_Zone\NodeJs_Work\Output\node_modules\mysql\lib\
protocol\Protocol.js:39:16)
at Socket.Connection.connect (G:\Coding_Zone\NodeJs_Work\Output\node_modules
\mysql\lib\Connection.js:82:28)
at Socket.EventEmitter.emit (events.js:88:17)
at TCP.onread (net.js:397:14)
--------------------
at Protocol._enqueue (G:\Coding_Zone\NodeJs_Work\Output\node_modules\mysql\l
ib\protocol\Protocol.js:135:48)
at Protocol.handshake (G:\Coding_Zone\NodeJs_Work\Output\node_modules\mysql\
lib\protocol\Protocol.js:52:41)
at Connection.connect (G:\Coding_Zone\NodeJs_Work\Output\node_modules\mysql\
lib\Connection.js:109:18)
at Object.<anonymous> (G:\Coding_Zone\NodeJs_Work\Output\mySqlTest.js:9:12)
at Module._compile (module.js:449:26)
at Object.Module._extensions..js (module.js:467:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.runMain (module.js:492:10)
at process.startup.processNextTick.process._tickCallback (node.js:244:9)
{ [Error: ER_ACCESS_DENIED_ERROR: Access denied for user 'root'@'192.168.2.99' (
using password: YES)]
code: 'ER_ACCESS_DENIED_ERROR',
errno: 1045,
sqlState: '28000',
fatal: true } undefined

更新:

我也尝试过其他用户并授予他们对数据库的完全权限。但仍然无法解决错误。但奇怪的是我能够连接到mysql客户端

最佳答案

正如@Paul 所说的那样,这不是 NodeJS 的问题。如果您仔细观察,您正在向用户 root@192.168.2.150 授予权限(表示“从 IP 192.168.2.150 连接的用户 root”),但在错误消息中指出:

Access denied for user 'root'@'192.168.2.99'

尝试为运行 NodeJS 实例的 IP (192.168.2.99) 授予根权限,它应该可以工作。

关于mysql - 无法将nodejs连接到mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25808017/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com