【发布时间】:2018-09-13 08:12:43
【问题描述】:
我有一个 EC2 实例,我正在尝试连接到 RDS (mySQL) 实例。
我创建了一个 RDS mySQL 实例,名称为:mydbinstance,用户:mysuperuser 和一个通用的 8 字符 (mypassword) 仅用于测试目的。
虚拟私有云:默认 (与EC2所在位置相同)
子网组:默认
公共可访问性:否(数据库实例将没有公共 IP 分配的地址。 VPC 之外的任何 EC2 实例或设备都不会 能够连接。)
可用区:无偏好
VPC 安全组:创建新的 VPC 安全组
IAM 数据库身份验证:已禁用
我将 RDS 实例添加到与 EC2 实例相同的 VPC,因此它位于同一区域中。
dbinstance 正在使用新的安全组:
类型:自定义 TCP 规则协议:TCP 端口:3306 CIDR:174.62.127.135/32
这个 IP 地址来自哪里?我在实例化时没有指定任何内容...
接下来,我通过 ssh 连接到我的 EC2 实例(位于同一 VPC 中的那个),然后尝试:
$ mysql -h mydbinstance.$(RDS_INSTANCE).us-west-2.rds.amazonaws.com -P 3306 -u mymasteruser -p
我在提示符处输入了mypassword(我之前指定的那个),我得到:
错误 1045 (28000): 拒绝用户 'mymasteruser'@'localhost' 的访问 (使用密码:YES)
我尝试使用ifconfig 获取 EC2 框的 IP 地址,并用它更新了 RDS 使用的安全组 IP 地址(我在上面想知道的那个)。同样的结果,没有运气连接。从那时起,我一直在谷歌上寻找答案。
我还有哪些其他的调试选项?如有任何建议,我将不胜感激。
更新
我能够从我的笔记本电脑上运行它(通过将 DB Public Access 更改为 YES):
mysql -h mydbinstance.$(RDS_INSTANCE).us-west-2.rds.amazonaws.com -P 3306 -u mymasteruser -p
找到 0 个关联找到 1 个连接:
found 0 associations
found 1 connections:
1: flags=82<CONNECTED,PREFERRED>
outif en3
src 192.168.86.33 port 55863
dst xx.xxx.xxx.xxx port 3306
rank info not available
TCP aux info available
但是我无法从我的 EC2 实例中获得任何输出。它挂了!与我运行 netcat (nc) 命令的原因相同。为什么这在我的 EC2 实例上不起作用?
【问题讨论】:
-
检查允许此连接的安全组。
-
我做到了。我在上面写过:dbinstance 正在使用一个新的安全组:并为其提供了参数。
-
如果安全组不让我进入,我不会看到 mySQL 错误。我怀疑凭据是错误的,但我三次检查了我输入的原因,所以我可以从头开始。我可以尝试使用其他命令从 EC2 连接到 RDS 吗?
标签: mysql amazon-web-services amazon-ec2 amazon-rds