mysql - 如何从本地计算机建立与 AWS ec2 实例的 MYSQL 连接?

标签 mysql node.js amazon-ec2 production

我已经完成了我的项目,并正在尝试将其部署到 AWS。我有一个 ec2 实例作为我的网络服务器,具有以下配置详细信息:

  • NodeJS 使用端口 5000
  • PM2(保持服务器始终处于事件状态)
  • NGINX 作为网络服务器从我的构建文件中读取
  • ec2 实例中的 MySQL 作为我的数据库。 (使用端口3306)

我的问题是我无法建立从本地计算机到内部包含 MYSQL 数据库的 AWS ec2 实例的连接。我打开了 MYSQL 工作台,可以很好地连接到它,但是当我尝试从 node.js 建立到数据库的连接字符串时,它给了我一个错误。

我能够成功连接到 MYSQL 工作台中的数据库,但现在如何从 Nodejs 连接字符串连接到它?

我已经尝试过以下内容:

1) 在 AWS 安全组中为端口 5000 上的所有传入流量开放 TCP 规则
2) 在AWS安全组中为端口3306的所有传入流量开放MYSQL/Aurora规则
3) 授予用户.的所有权限,并刷新并重新启动mysql服务器。

它在控制台中给我错误。

`{ Error: connect ECONNREFUSED 14.54.xxx.xx:3306
    at Object._errnoException (util.js:1019:11)
    at _exceptionWithHostPort (util.js:1041:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1175:14)
--------------------
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect',
  address: '14.54.xxx.xxx',
  port: 3306,
  fatal: true }`

这是我尝试建立连接的代码:

```var mysql = require("mysql");

// Local Works just fine

// var connection = mysql.createConnection({
//   host: "localhost",
//   user: "root",
//   password: "xxx",
//   database: "devdb",
//   charset: "utf8mb4"
// });

// Production Connection to AWS MYSQL instance (stuck on)

var connection = mysql.createConnection({
  host: "14.54.xxx.xxx",
  port: "3306",
  user: "jordan",
  password: "xxx",
  database: "productiondb"
  charset: "utf8mb4"
});

// Test the db connection

connection.connect(function(err) {
  if (err) {
    console.log(err);
  } else {
    console.log("Connected!");
  }
});

module.exports = connection;
```

我希望能够从我的 NodeJS 成功连接到数据库实例

最佳答案

再次确认,我认为您的安全组出了问题,也许您的服务器正在内部监听,所以它正在发生。转到您的 EC2 安全组 并选择入站,并将规则添加为 type=mysqlproto=tcpport range=3306 code>, source=0.0.0.0/0,::/0(允许全部)

关于mysql - 如何从本地计算机建立与 AWS ec2 实例的 MYSQL 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56250838/

相关文章:

MYSQL 已将一列设置为非空,但它仍然接受空值

创建表时 Mysql 语法错误 #1064

c# - 如何将 MySQL 数据返回到泛型类

php - 从 MySql 查询中排序数组

node.js - DeprecationWarning : collection. findAndModify 已弃用。改用 findOneAndUpdate、findOneAndReplace 或 findOneAndDelete?

node.js - 如何在 promise 内停止进程nodejs

node.js - Azure App Insights 未从 winston 收集日志

node.js 程序卡在 Amazon linux 服务器上

amazon-web-services - 如何在私有(private)子网(没有 NAT 网关)中托管的 EC2 上使用 aws-cw-agent

linux - 如何测量 Cassandra 压力测试的 IOPS?