通过 Node JS 连接 AWS MySQL 数据库

Posted

技术标签:

【中文标题】通过 Node JS 连接 AWS MySQL 数据库【英文标题】:Connect to AWS MySQL database via Node JS 【发布时间】:2016-11-12 06:59:53 【问题描述】:

我在 AWS 和 mysql 数据库上有一个实例。 我能够通过本地机器上的工作台连接到实例。 但是,我无法通过节点 js 代码连接到数据库。 下面是sn-p:

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=not 写在 AWS 实例上,我在我的机器上编写它,是的,安全组中启用了端口 3306。

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

【问题讨论】:

错误是什么? console.log(err) NodeJS 代码是否与数据库运行在同一台服务器上?如果没有,您将需要在安全组中打开端口 3306。 我没有使用 MongoDB @MarkB 你可以试试端口:3306 -> 端口:'3306'。 有没有办法避免添加 mysql 依赖项。AWS-native 是否没有类似 mysql-client 的东西,我可以在不添加包的情况下需要它(以及所有其他的东西,然后要求)。对于运行无服务器的 API,您必须尽可能减小大小 【参考方案1】:

首先,您必须进行设置,使 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)对数据库的所有权限的用户。 祝你好运

【讨论】:

【参考方案2】:

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

port : '3306',

【讨论】:

以上是关于通过 Node JS 连接 AWS MySQL 数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 Node.js 从 AWS Lambda 函数连接到 MySql 数据库,没有连接回调

AWS 部署 NGINX 连接被拒绝用于 Node.JS 项目

其他通过html用node.js连接和显示mysql的方式

无法使用 Node.js 和 AWS EC2 访问 mysql 服务器

入站流量的 AWS 安全组

在 RDS 中访问 MySQL 或 MS SQL 时的 AWS Lambda node.js ETIMEDOUT