我已经完成了我的项目,并正在尝试将其部署到 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=mysql
、proto=tcp
、port range=3306
code>, source=0.0.0.0/0,::/0
(允许全部)
关于mysql - 如何从本地计算机建立与 AWS ec2 实例的 MYSQL 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56250838/