Javascript 查询mysql数据库时出现ETIMEDOUT错误

Javascript 查询mysql数据库时出现ETIMEDOUT错误,javascript,mysql,node.js,Javascript,Mysql,Node.js,我使用sequel pro创建了一个名为test的数据库。它有一个名为users的表。在该表中有一个用户->id=1,name=Phantom 当我运行下面的代码时,我得到的解决方案是:未定义 有人能告诉我如何连接到数据库并向用户展示吗 var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost:8889', user : 'root',

我使用sequel pro创建了一个名为
test
的数据库。它有一个名为
users
的表。在该表中有一个用户->
id=1,name=Phantom

当我运行下面的代码时,我得到的解决方案是:未定义

有人能告诉我如何连接到数据库并向用户展示吗

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost:8889',
  user     : 'root',
  password : 'root',
  database : 'test'
});

connection.connect();

connection.query('SELECT * from users', function(err, rows, fields) {
  if (err) throw err;
  console.log('The solution is: ', rows);
});

connection.end();
它显示以下错误:

错误:连接ETIMEDOUT 连接时。_handleConnectTimeout(/Users/fitz035/Desktop/sony/presave/node_modules/mysql/lib/Connection.js:425:13)

我正在通过MAMP运行数据库。以下是数据库设置:

Host:   localhost 
Port: 8889 
User:   root 
Password:   root 
Socket: /Applications/MAMP/tmp/mysql/mysql.sock

节点是异步的,所以
connection.end()
很可能在查询回调之前发生。另外,指定Mysql在非标准时运行的端口

试试这个:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : 'root',
  database : 'test',
  port: 8889
});

connection.connect();

connection.query('SELECT * from users', function(err, rows, fields) {
    if(err) console.log(err);
    console.log('The solution is: ', rows);
    connection.end();
});

如果它在配置了防火墙的VPS上,您需要通过SSH将您的IP列入白名单。否则,即使在通过cPanel的RemoteMYSQl添加之后,它仍然会抛出上述错误

# csf -a [RemoteIP]
# csf -r 

您也可以通过WHM快速完成。刚刚发布,因为它可能会帮助某人。

检查回调中的
err
参数,查看出了什么问题。根据您的代码,我猜,在实际查询完成之前,连接已关闭。@Sirko更新了问题您是否验证了您的数据库是否正在实际运行(在该端口上)?如果您的数据库在端口8889上运行,则应将其作为附加参数传递给连接。默认的mysql端口是3306,你的应用现在找不到任何服务器。另一种方法是,您可以直接传递套接字,如下所示:Let us.抱歉,更新了问题。想一想新的信息可能会让人感觉更深刻,这会改变一切:)尝试将端口号添加到
createConnection
cool,但是关于
connection.end
的观点仍然有效。如果您满意,请接受答案,或者如果需要,我可以澄清