错误:在 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 中没有错误

为啥这个解析错误在这里解析错误:语法错误,意外标识符“编辑”,期待“,”或“;”? [复制]

错误:无法在视图目录节点 JS 和 Jquery 错误中查找视图“错误”

Java编程中常见的错误都有哪些

c ++:在数学错误中创建实际错误而不是nan

为啥在访问二级指针时出现分段错误错误? C语言