通过Node JS连接到AWS MySQL数据库

时间:2016-07-10 02:54:02

标签: mysql node.js amazon-web-services express

我在AWS和MySQL数据库上有一个实例。 我能够通过本地计算机上的工作台连接到实例。 但是,我无法通过节点js代码连接到数据库。 以下是摘录:

var express    = require("express");
var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'ec2-52-33-41-xxx.us-west-2.compute.amazonaws.com',
 port      :  3306,
  user     : 'ec2-user',
  password : 'root',
  database : 'FAMILY_GIVING_TREE'

});
var app = express();

connection.connect(function(err){

if(!err) {
    console.log("Database is connected ... ");    
} else {
    console.log("Error connecting database ... ");    
}
});

错误是:

{ [Error: connect ECONNREFUSED 52.33.xx.84:3306]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect',
  address: '52.33.41.84',
  port: 3306,
  fatal: true }

节点js代码是w =不是通过AWS实例写的,我是在我的机器上写的,是的,安全组中启用了端口3306。

我遇到了数据库连接问题。 知道我哪里错了吗? 提前谢谢。

2 个答案:

答案 0 :(得分:2)

您的node.js代码中存在语法错误。将port : 3306,替换为下面的''

port : '3306',

答案 1 :(得分:0)

首先,您必须进行设置,使Mysql可以远程访问。

https://mariolurig.com/coding/connect-remotely-mysql-database-amazon-ec2-server/

第二,就我而言,我不得不使用ec2公共IP地址而不是公共DNS。 所以:

var connection = mysql.createConnection({
  host     : '52.33.41.xx',
 port      :  '3306',
  user     : 'remote',
  password : 'password',
  database : 'FAMILY_GIVING_TREE'

});

第三,请记住,“ remote”是您授予数据库上localhost和“%”(来自所有IP)的所有特权的用户。 好运