错误:连接ETIMEDOUT

我正在尝试使用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); }); }) }) 

而我不断收到以下错误

 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) 

描述:我运行在本地主机相同的服务器,并与phpMyadmin成功连接,我没有得到这个错误,但是当我在VPS中实现该服务器,它不能创build连接与phpMyadmin,并说连接ETIMEDOUT。

发生此错误是由于将服务器连接到远程数据库。 如果你想连接你的服务器与远程数据库,然后确保你的远程数据库提供者已经给远程数据库的访问,否则你需要在你的VPS安装MySQL。

检查你的mysql服务器configuration。 如果您在与mysql服务器相同的系统上执行此代码,那么mysql可能不会被configuration为正在侦听TCP端口3306(它可能正在侦听unix套接字)。

如果你想从运行mysql服务器的系统之外连接,那么不仅可以将mysqlconfiguration设置为在端口3306上正确的networking接口上进行侦听,而且可能有防火墙规则先设置为了到达mysql服务器。