簡體   English   中英

在筆記本電腦上運行時,nodeJS腳本可以連接到AWS MySQL Server,但在Amazon EC2實例上運行時,不能連接到AWS MySQL Server。

[英]nodeJS script can connect to aws mySQL server when run on laptop, but not when run on amazon EC2 instance

我有以下腳本:

const pug = require('pug');
var cloudinary = require('cloudinary');
var express = require('express');
var multer  = require('multer');
var upload = multer({ dest: 'uploads/' });
var request = require('request');
var https = require('https');
var fs = require('fs');
var morgan = require('morgan');
var bodyParser = require('body-parser');
var mysql      = require('mysql');
var JSON = require('JSON');
var bluebird = require('bluebird');

var databaseConnection = mysql.createConnection({
    host     : 'assignment3cloud.cfavdkskfrrc.us-west-2.rds.amazonaws.com',
    port: 3306,
    user     : '<>',
    password : '<>',
    database : 'assign3'
});

databaseConnection  .connect(function(err){
    if(!err) {
        console.log("Database is connected ... \n\n");
    } else {
        console.log(err);
        console.log("Error connecting database ... \n\n");
    }
});

當我在筆記本電腦上運行此腳本時,它運行正常。

在Amazon EC2 Ubuntu實例上運行它時,出現以下錯誤:

{ [Error: connect ETIMEDOUT]
  errorno: 'ETIMEDOUT',
  code: 'ETIMEDOUT',
  syscall: 'connect',
  fatal: true }
Error connecting database ... 


/home/ubuntu/home/skrpt.js:38
    if (error) throw error;
               ^

Error: connect ETIMEDOUT
    at Connection._handleConnectTimeout (/home/ubuntu/home/node_modules/mysql/lib/Connection.js:419:13)
    at Socket.g (events.js:260:16)
    at emitNone (events.js:67:13)
    at Socket.emit (events.js:166:7)
    at Socket._onTimeout (net.js:318:8)
    at _runOnTimeout (timers.js:524:11)
    at _makeTimerTimeout (timers.js:515:3)
    at Timer.unrefTimeout (timers.js:584:5)
    --------------------
    at Protocol._enqueue (/home/ubuntu/home/node_modules/mysql/lib/protocol/Protocol.js:141:48)
    at Protocol.handshake (/home/ubuntu/home/node_modules/mysql/lib/protocol/Protocol.js:52:41)
    at Connection.connect (/home/ubuntu/home/node_modules/mysql/lib/Connection.js:130:18)
    at Object.<anonymous> (/home/ubuntu/home/skrpt.js:27:22)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:442:10)
    at startup (node.js:136:18)
    at node.js:966:3

我的猜測是,為了使數據庫與EC2服務器對話,還存在一些其他安全要求。 我能做什么?

您可能必須在實例的入站安全規則中添加MYSQL端口(當您在帶有aws實例的頁面上時,向右水平滾動)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM