Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 通过EB连接到具有EC2实例的RDS端点的问题_Mysql_Amazon Web Services_Amazon Ec2_Sequelize.js_Rds - Fatal编程技术网

Mysql 通过EB连接到具有EC2实例的RDS端点的问题

Mysql 通过EB连接到具有EC2实例的RDS端点的问题,mysql,amazon-web-services,amazon-ec2,sequelize.js,rds,Mysql,Amazon Web Services,Amazon Ec2,Sequelize.js,Rds,我的Elasticbeantalk环境有问题,EC2实例不允许连接到我的RDS实例。我似乎无法确定原因,因为我将RDS安全组配置为允许任何IP的MYSQL连接,并且在我的EC2实例安全组中具有相同的入站规则。我使用nc-zv test-db.cffvlzfsdafasf6x7kir.us-east-2.rds.amazonaws.com 3306和I连接到。。。成功了作为响应,表示RDS实例上的安全组没有问题,但在我的EC2实例日志中,我有未处理的拒绝SequelizeConnectionRef

我的Elasticbeantalk环境有问题,EC2实例不允许连接到我的RDS实例。我似乎无法确定原因,因为我将RDS安全组配置为允许任何IP的MYSQL连接,并且在我的EC2实例安全组中具有相同的入站规则。我使用
nc-zv test-db.cffvlzfsdafasf6x7kir.us-east-2.rds.amazonaws.com 3306和
I连接到。。。成功了
作为响应,表示RDS实例上的安全组没有问题,但在我的EC2实例日志中,我有
未处理的拒绝SequelizeConnectionRefusedError:connect EconRefused 127.0.0.1:3306

这是我通过Sequelize的连接,我检查了我的环境变量的用户名和密码,我确认它们是正确的:

var Sequelize = require('sequelize');
var path = require('path');
var sequelize = new Sequelize(process.env.LOCAL_DATABASE, process.env.RDS_DATABASE || process.env.LOCAL_USERNAME, process.env.RDS_USERNAME || process.env.LOCAL_PASSWORD, process.env.RDS_PASSWORD, {
    host: process.env.RDS_HOSTNAME || 'localhost',
    port: process.env.RDS_PORT || '3306',
    dialect: 'mysql'
});

对我应该执行的检查表或我可能出错的地方有什么建议吗?

这部分完全错了:

var sequelize = new Sequelize(process.env.LOCAL_DATABASE, process.env.RDS_DATABASE || process.env.LOCAL_USERNAME, process.env.RDS_USERNAME || process.env.LOCAL_PASSWORD, process.env.RDS_PASSWORD, {
    host: process.env.RDS_HOSTNAME || 'localhost',
    port: process.env.RDS_PORT || '3306',
    dialect: 'mysql'
});
你设法把一个
|
放在你需要放
的地方,
和一个
放在你应该放
|
的地方。试试这个:

var sequelize = new Sequelize(process.env.LOCAL_DATABASE || process.env.RDS_DATABASE, 
        process.env.LOCAL_USERNAME || process.env.RDS_USERNAME, 
        process.env.LOCAL_PASSWORD || process.env.RDS_PASSWORD, {
    host: process.env.RDS_HOSTNAME || 'localhost',
    port: process.env.RDS_PORT || '3306',
    dialect: 'mysql'
});

您的RDS_主机名应该是test-db.cffvlzfsdafasf6x7kir.us-east-2.RDS.amazonaws.com,而不是本地hostright,但是它是否可以选择使用
process.env.RDS|u HOSTNAME
,因为它存在于我的EC2实例中,并且在
|
之前被引用?如果你想连接到RDS,为什么要使用| |语句?我在我的EC2实例中设置了一个env变量,所以这是用于生产的,但我留下了“localhost”,因为我想在运行本地测试时使用该数据库。我没有在本地应用程序repo中设置env变量。这会有所不同吗?我不确定,但您的EC2正在尝试连接到本地数据库,而不是RDS。感谢您发现我最大的问题。更改后没有任何问题。