无法从Django应用程序连接到Mysql - AWS,EC2,RDS

时间:2017-04-18 23:31:32

标签: mysql django amazon-web-services nginx amazon-ec2

我无法连接到我的RDS MySQL数据库。

我目前的设置:

Django 1.9 +

AWS - 推出了EC2实例(Amazon Linux)。推出了MySQL的RDS实例(5.6.7)。我为EC2实例和RDS实例创建了一个Virtual PC(VPC),并在该组中创建了几个安全规则,以便EC2实例可以连接到MySQL RDS。以下是我使用的安全规则并与VPC相关联。

    Inbound Rules: (Type, Protocol, Port Range, Source)
    1. Http , TCP, 80 , 0.0.0.0/0
    2. SSH , TCP, 22 , <homePC address>/32
    3. HTTPS, TCP, 443, 0.0.0.0/0
    4. MYSQL/Aurora, TCP, 3306, source (my created security group)

Nginx - 将我的内容从端口80重定向到端口443.我创建了SSL证书以使我的网站安全。我正确地服务了我的Django应用程序和静态文件。 Nginx一切都很棒!

以前我能够连接到我的RDS实例。我没有在那个时间点设置弹性IP,因为我花了一些时间将我的域名转移到Route53(amazons DNS)。我成功地将其转移,并将其与我的EC2实例相关联,甚至启动我的应用程序

问题 -
第一个问题我无法从我的EC2实例连接到RDS。我已经检查了我的django设置文件和秘密文件(用我的设置文件提供的敏感信息,我不在版本控制之下)。以下是我对mysql连接的设置示例 - 我明显改变了它们

    "DATABASE_NAME":"myDatabase",
    "DATABASE_USERNAME": "myUsername",
    "DATABASE_PASSWORD": "myPassword123",

我在RDS控制台中仔细检查了用户名和密码,甚至重置了密码。

在我继续并激活我的虚拟环境并尝试连接之后。

    python manage.py dbshell

我的错误是

    ERROR 1045 (28000): Access denied for user 'myUsername'@'<private IP address from Elastic IP>' (using password: YES)

显示用户名我在设置中使用的内容。它改变了。我觉得这是问题的根本原因,但我不确定为什么Django会以这种方式更改我的用户名。

第二个问题 - 我也尝试使用mysql直接连接数据库。我仔细检查我的端点,用户名和密码是否正确,但连接时也遇到了麻烦。

注意 - 正如我所说,在获取我的IP地址之前,我能够以上述两种方式连接。因此,我的麻烦是配置安全规则以允许永久IP地址,并且无法使用TCP连接来使用Mysql客户端登录。

提前致谢。

0 个答案:

没有答案