我正在尝试使用node-mysql在我的数据库服务器和客户端节点应用之间建立远程连接。
当我尝试连接到远程数据库时,出现此错误:
node.js:201
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: connect ECONNREFUSED
at errnoException (net.js:646:11)
at Object.afterConnect [as oncomplete] (net.js:637:18)
连接到本地数据库工作正常(使用socketPort参数)。
我可以使用PHP从我的计算机localhost以及我拥有的另一台服务器连接到这个远程数据库,所以我认为mysql conf没有问题。
有关信息,nodejs正在运行nginx并且我已经设置了一个代理以使节点在端口80上工作,这可能是问题吗?
我该怎么检查?
感谢。
修改
这是我的代码,以防万一:
var express = require('express');
var mysql = require('mysql');
var app = express();
var connection = mysql.createConnection({
debug: false,
host: '12.34.56.67',
user: 'user',
password: 'pass'
});
答案 0 :(得分:18)
尝试使用mysql socket:
var connection = mysql.createConnection({
user: 'user',
password: 'pass',
socketPath: 'mysql-socket-path', /*example: /Applications/MAMP/tmp/mysql/mysql.sock*/
database: 'dbname'
});
答案 1 :(得分:7)
如果仍有人寻找答案:
检查MySql服务器的配置。
在我的情况下,运行netstat -ln | grep mysql
(根据Troubleshooting Problems Connecting to MySQL)显示我的服务器正在侦听套接字/tmp/mysql.sock
,因此在我使用的createConnection
选项中socketPath: '/tmp/mysql.sock'
代替host:
和port:
答案 2 :(得分:2)
此错误与MySQL客户端无法连接到host:port
给定的错误有关。如errno.h
中所定义,ECONNREFUSED是拒绝连接时引发的错误 - 这可能是由以下原因引起的:
iptables
阻止端口在我的情况下,我的MySQL服务器未正确绑定到0.0.0.0
用于外部连接,而是绑定到127.0.0.1
,因为它是默认情况下;但是you can change this。
错误不是来自node-mysql
包,而堆栈跟踪是双重显示的,只显示来自net.js
的错误。
答案 3 :(得分:1)
好的,所以我查看了node-mysql dev,看起来它不是一个node-mysql错误,但是很难调查更多。
无论如何,我发现这个lib有效,所以我会选择它。
答案 4 :(得分:0)
使用以下命令获取您的端口: netstat -tlnp
搜索程序名称mysqld或仅命名。
答案 5 :(得分:0)
我添加了端口:3306,该问题得以解决。
var connection = mysql.createConnection
({
user: 'root',
password: 'root',
server: 'localhost',
port:3306,
database: 'abcd',
insecureAuth: true,
dialect: 'mysql',
multipleStatements: true,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
});
connection.connect();
答案 6 :(得分:0)
使用命令:纱线运行开始,并且不要使用:cd / folderX &&纱线运行开始