Node.js连接MySQL数据库 - 连接超时(ETIMEDOUT)

6

我尝试在一个Node.js服务器上简单连接到一个在线MySQL数据库。这是我的代码:

var mysql = require('mysql');

var con = mysql.createConnection({
    host: 'example.org',
    username: 'myusername',
    password: 'mypassword'
});

con.connect(function(err) {
    if (err) throw err;
    console.log("Connected!");
});

每当我运行此服务器时,都会出现错误:“connect ETIMEDOUT”。
我非常确定我的凭据是正确的,并且我还在phpmyadmin中更改了用户的权限(我给了这个用户所有可能的权限)。
我在本地运行服务器,不确定这是否有任何关系。
我的问题是: - 为什么会超时? - 我如何连接到这个数据库?

连接回调函数中出现的“Error: connect ETIMEDOUT”表示无法建立到MySQL服务器的连接。您确定输入的“host”指向MySQL服务器正在侦听的IP地址,并且MySQL正在侦听标准端口吗? - t.niese
@t.niese 在“host”字段中,我放置了托管MySQL数据库的Web服务器的URL。我还尝试用IP地址替换URL,但也没有起作用。 - Siebrand Romeyn
1个回答

5

看起来,这与您的数据库服务器有关。

不过,您可以尝试通过传递更长的超时值来延长默认超时时间。(默认值为10000)。

只需执行以下操作:

var con = mysql.createConnection({
host: 'example.org',
    username: 'myusername',
    password: 'mypassword',
    connectTimeout: 30000
});

谢谢您的回答。我尝试了,但仍然出现“ETIMEDOUT”错误。您认为这是什么原因? - Siebrand Romeyn
你能从命令行连接到你的数据库吗? - Shimon Brandsdorfer
不,我没有。我已经联系了托管服务,显然由于防火墙无法从外部源连接到此Web服务器。我将把数据库移动到另一台服务器。感谢您的帮助! - Siebrand Romeyn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接