错误:在 TCPConnectWrap.afterConnect [as oncomplete] 处连接 ECONNREFUSED 185.248.177.110:3306,cpanel
Posted
技术标签:
【中文标题】错误:在 TCPConnectWrap.afterConnect [as oncomplete] 处连接 ECONNREFUSED 185.248.177.110:3306,cpanel【英文标题】:Error: connect ECONNREFUSED 185.248.177.110:3306 at TCPConnectWrap.afterConnect [as oncomplete], cpanel 【发布时间】:2021-01-24 15:33:09 【问题描述】:我有一个简单的节点应用程序,当它启动时它会尝试连接到 mysql 数据库并将第一个用户汇集到特定表上。 此数据库运行在与运行节点应用程序不同的计算机上。
制作查询代码
var mysql = require("mysql");
const config = require("config"); //config variables for enviroments
var con = mysql.createConnection(
host: config.get("db.host"),
port: 3306,
user: config.get("db.user"),
ssl: true,
password: config.get("db.password"),
database: "auth",
);
const perform = (query) =>
return new Promise((resolve, reject) =>
con.query(query, function (err, result)
if (err) reject(new Error(err));
resolve(result);
con.end();
);
);
;
module.exports = perform;
在应用启动时调用该函数。
perform("select * from account limit 1")
.then((res) =>
console.log(res);
)
.catch((err) =>
throw err;
);
如果我在我的机器上运行它,它可以正常工作,连接到另一台机器上的数据库并且它能够毫无损害地查询它。
但是,当我将此代码上传到 cpanel 时,我可以在我的提供程序上运行节点应用程序,并尝试启动该应用程序时出现以下错误:
App Name: My Express App - Production
Listening on port 3500...
Error: connect ECONNREFUSED 185.248.177.110:3306
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1145:16)
--------------------
at Protocol._enqueue (/<my_root_info>/node_modules/mysql/lib/protocol/Protocol.js:144:48)
at Protocol.handshake (/<my_root_info>/node_modules/mysql/lib/protocol/Protocol.js:51:23)
at Connection.connect (/<my_root_info>/node_modules/mysql/lib/Connection.js:116:18)
at Object.<anonymous> (/<my_root_info>/dbQuery/performQuery.js:12:5)
at Module._compile (internal/modules/cjs/loader.js:1085:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
at Module.load (internal/modules/cjs/loader.js:950:32)
at Function.Module._load (internal/modules/cjs/loader.js:791:14)
at Module.require (internal/modules/cjs/loader.js:974:19)
at require (internal/modules/cjs/helpers.js:88:18)
我尝试过的事情
我知道代码可以工作,因为在我的本地机器上运行相同的代码会进入数据库,我也尝试在另一台计算机上运行,它也进入了数据库。
我知道数据库配置为接受外部连接,端口 3306 在数据库运行的位置打开,因为我可以 ping 地址并且可以通过 MySQL Workbench 连接到数据库或在任何计算机上运行节点应用程序。
我试图在 cpanel 的终端上 ping 运行 db 的机器 (185.248.177.110) 并到达那里。但是由于某种原因,节点应用程序在 cpanels 终端上运行时无法连接到数据库。
我不知道为什么这只发生在 cpanels 终端上,节点应用程序的其余部分工作正常,但与数据库的连接总是抛出该错误...
我也知道这不是用户或密码的拼写错误,因为它们会引发不同的错误,而且我没有看到任何尝试在数据库端登录。
为什么会这样?
【问题讨论】:
大多数服务器都配置为只允许从 localhist 访问,这就是您的本地版本有效的原因。来自互联网的访问被认为是危险的,因此不授予外部 IP 访问权限。 感谢您的回答,但当我说我可以访问本地计算机上的数据库时,我认为您不明白。它与数据库运行的位置不同。甚至不是同一个互联网,甚至不是同一个国家。 2 台不同的机器,但我可以从我的计算机连接到它,但在运行节点应用程序时,我不能从 cpanel 连接到它 【参考方案1】:结果我不得不询问我的主机提供商,为我的数据库运行的地址和端口制定新的流量规则,即 185.248.177.110:3306。
现在一切都在流动。
【讨论】:
以上是关于错误:在 TCPConnectWrap.afterConnect [as oncomplete] 处连接 ECONNREFUSED 185.248.177.110:3306,cpanel的主要内容,如果未能解决你的问题,请参考以下文章
Amazon S3 图像在 Chrome 中获取 CORS 错误/错误,在 Firefox 中没有错误
为啥这个解析错误在这里解析错误:语法错误,意外标识符“编辑”,期待“,”或“;”? [复制]