我无法连接到我的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客户端登录。
提前致谢。