简体   繁体   English

错误:连接ETIMEDOUT

[英]Error: connect ETIMEDOUT

I am trying to work with Node and Mysql but i keep encountering error when trying to connect with the Database. 我正在尝试使用Node和Mysql但我在尝试连接数据库时遇到了错误。

 //For mysql server
var mysql = require('mysql');

var connection = mysql.createConnection(
{
  host: 'example.com',
  user: 'abc',
  password: '***',
  database: 'abcd',
  port: 3306,
});
// If there is an error connecting to the database
connection.connect( function(err)
{
  if (err)
  { 
    throw err;
  }
  else 
  {
    console.log('DB connection establish');
  }
});

function check_userid(usersId)
{
var que = connection.query(
  'select * from table where id = '+usersId, function(err, result, fields){
  if(err) throw err;
  console.log('Resultset: ', result);
  console.log('Length of Resultset: ', result.length);

  if(result.length == 0)
  {
    connection.query('insert into table (id, user_status) values ( "' + usersId + '", "' + 'connected' + '")', 
                    function (err, result) 
                    {
                      if (err) throw err;
                      console.log('Updation of table: ',result.insertId);
                    });
  }
  else
  {
    connection.query('update table SET user_status="'+'connected'+'" WHERE id = "' + usersId + '"', 
                    function (err, result) 
                    {
                      if (err) throw err;
                      console.log('Updation of Table: ',result.insertId);
                    });
  }
  });

}
//For websocket
var webSocketServer = new (require('ws')).Server({port: (process.env.PORT || 5000)}),
webSockets = {} // userID: webSocket

// CONNECT /:userID
// wscat -c ws://localhost:5000/1
webSocketServer.on('connection', function (webSocket) 
{
  var userID = parseInt(webSocket.upgradeReq.url.substr(1), 10)
  webSockets[userID] = webSocket
                   console.log('connected: ' + userID + ' in ' + Object.getOwnPropertyNames(webSockets))

                   check_userid(userID);

                   // Forward Message
                   //
                   // Receive               Example
                   // [toUserID, text]      [2, "Hello, World!"]
                   //
                   // Send                  Example
                   // [fromUserID, text]    [1, "Hello, World!"]
                   webSocket.on('message', function(message) {
                                console.log('received from ' + userID + ': ' + message)
                                var messageArray = JSON.parse(message)
                                var toUserWebSocket = webSockets[messageArray[0]]
                                if (toUserWebSocket) {
                                console.log('sent to ' + messageArray[0] + ': ' + JSON.stringify(messageArray))
                                messageArray[0] = userID
                                toUserWebSocket.send(JSON.stringify(messageArray))
                                }
                                })

                   webSocket.on('close', function () {
                                delete webSockets[userID]
                                console.log('deleted: ' + userID)
                                connection.query('update table SET user_status="'+'disconnected'+'" WHERE id = "' + userID + '"', 
                    function (err, result) 
                    {
                      if (err) throw err;
                      console.log('Updation of table: ',result.insertId);
                    });
                                })
                   })

And i keep getting the following Error 我一直得到以下错误

Error: connect ETIMEDOUT
at errnoException (net.js:904:11)
at Object.afterConnect as oncomplete
--------------------
at Handshake.Sequence (/Users/apple/Desktop/js/node_modules/mysql/lib/protocol/sequences/Sequence.js:15:21)
at new Handshake (/Users/apple/Desktop/js/node_modules/mysql/lib/protocol/sequences/Handshake.js:9:12)
at Protocol.handshake (/Users/apple/Desktop/js/node_modules/mysql/lib/protocol/Protocol.js:44:50)
at Connection.connect (/Users/apple/Desktop/js/node_modules/mysql/lib/Connection.js:38:18)
at Object. (/Users/apple/Desktop/js/server.js:13:12)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)

Description: I run same server in localhost,and succesfully connected with phpMyadmin and I did not got that error but When I implement that server in VPS it cannot create connection with phpMyadmin and say connect ETIMEDOUT. 描述:我在localhost中运行相同的服务器,并且与phpMyadmin成功连接,但我没有得到错误但是当我在VPS中实现该服务器时,它无法与phpMyadmin建立连接并说连接ETIMEDOUT。

This error occurred due to connect the server with Remote DataBase. 由于将服务器与远程数据库连接而发生此错误。 If you want to connect your server with remotely database then make sure your remotely database provider have given the access of remote DB otherwise you need to install the mysql in you VPS. 如果要将服务器与远程数据库连接,请确保远程数据库提供程序已授予远程数据库访问权限,否则您需要在VPS中安装mysql。

Check your mysql server configuration. 检查你的mysql服务器配置。 If you're executing this code on the same system as the mysql server, then mysql may not be configured to be listening on TCP port 3306 (it may just be listening on a unix socket). 如果您在与mysql服务器相同的系统上执行此代码,则可能无法将mysql配置为侦听TCP端口3306(它可能只是在侦听unix套接字上)。

If you're instead trying to connect from outside the system that the mysql server is running on, then not only may the mysql configuration not be set up to listen on the right network interface on port 3306, but there could be firewall rules you have to set up first in order to get to the mysql server. 如果您正在尝试从运行mysql服务器的系统外部进行连接,那么不仅可以将mysql配置设置为在端口3306上侦听正确的网络接口,而且可能存在防火墙规则首先要设置才能进入mysql服务器。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM