首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将nodejs连接到mysql

无法将nodejs连接到mysql
EN

Stack Overflow用户
提问于 2014-09-12 12:08:44
回答 7查看 23.4K关注 0票数 2

我在窗口上运行Node.js 0.10.31,在虚拟盒上运行mySQL 5.5.35,运行在192.168.2.150上。现在,要将节点js连接到mysql,我使用了以下连接器:

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

代码:

代码语言:javascript
复制
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 address为0.0.0.0。此外,在user表中,我已将所有数据库都授予root@192.168.2.150权限。但是,我仍然无法从节点连接到mysql,这会给出以下错误。我甚至尝试过Nodejs0.8.2版本,但它仍然不起作用。有人能指出错误吗?

错误:

代码语言:javascript
复制
 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客户端。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2015-05-20 01:52:53

正如@Paul正确地指出的,这不是NodeJS的问题。如果仔细观察,您正在授予用户root@192.168.2.150 (上面写着“用户根从IP 192.168.2.150连接”)的权限,但错误消息中指出:

代码语言:javascript
复制
Access denied for user 'root'@'192.168.2.99'

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

票数 8
EN

Stack Overflow用户

发布于 2016-07-05 14:11:43

我也遇到了同样的问题,我尝试了上面列出的其他解决方案。

按照jackleekrhttps://github.com/mysqljs/mysql/issues/250#issuecomment-7153315上的建议,我能够使用连接字符串进行连接:

var conn = mysql.createConnection('mysql://root:*******@localhost:3306/company?debug=true');

票数 2
EN

Stack Overflow用户

发布于 2014-09-12 12:20:27

您是否尝试过使用MySQL客户端中的相同信息进行连接?

您确定根用户没有被禁用(默认情况下通常是这样)吗?

简而言之,在我看来,这并不是一个节点问题,而是一个获得正确凭证和配置的问题。

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

https://stackoverflow.com/questions/25808017

复制
相关文章

相似问题

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