我已经完成了项目,并试图将其部署到AWS。我有一个ec2实例作为我的Web服务器,具有以下配置详细信息:
我的问题是我无法建立从本地计算机到其中包含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成功连接到数据库实例
答案 0 :(得分:1)
再次确保,我认为您的安全组有问题,也许您的服务器在内部侦听,所以这正在发生。转到您的EC2 security group
并选择“入站”,然后将规则添加为type=mysql
,proto=tcp
,port range=3306
,source=0.0.0.0/0,::/0
(全部允许)
答案 1 :(得分:1)
可能由于几种原因-
#start MySQL server sudo service mysqld start
#run configuration sudo mysql_secure_installation
在提示符下,请执行以下步骤:
Enter current password for the root account: press Enter key
Set root password? Y
New password: yourpassword
Re-enter new password: yourpassword
Remove anonymous users? Y
Disallow root login remotely? n
Remove test database and access to it? Y
Reload privilege tables now? Y
答案 2 :(得分:0)
实际上我想我只是想通了。
因此,默认的mysql配置文件将ip绑定到127.0.0.1。但是,我将绑定更改为ec2公共ip,并将默认的“ mysql”更改为“ jordan”,然后保存了配置文件,重新启动了mysql服务,现在可以使用了。
谢谢您的建议,我会在文档中将其写下来以供将来检查。