我刚刚创建了一个 AWS EC2 Ubuntu 实例和一个与之配套的 RDS mariadb 实例。 (我目前正在使用免费套餐)。
我已关闭对 RDS 的公共访问,以便只能在同一 VCS 内访问它。我的 EC2 盒子与 VCS 位于同一位置,我想从那里连接到数据库。
我在我的 Ubuntu 机器上安装了 mariadb-client。我使用 RDS 实例页面中的端点作为 RDS 框并运行命令:
mysql -P 3306 -u thomas -p -h ******.******.us-east-1.rds.amazonaws.com
ERROR 2005 (HY000): Unknown MySQL server host '******.*****.us-east-1.rds.amazonaws.com' (-2)
主机 *****.******.us-east-1.rds.amazonaws.com 返回未找到。
当我第一次尝试时拼错了服务器名称时,错误后出现了一个 (-3),我认为这很有趣。所以我用谷歌搜索了错误代码并发现了这个:https://dev.mysql.com/doc/refman/5.5/en/error-messages-client.html它告诉我有关错误代码 2005 的信息,但没有告诉我括号中的部分。
该文档引用了一个包含,我查了一下,但没有找到-2。所以:
1)在哪里可以找到有关括号中信息的信息?
2) 为什么我无法访问我的 RDS 实例?
答案1
嗯,正如所料,我是个笨蛋。首先,我没有意识到这一点,但端点由于某种原因发生了变化。我可能更改了一个设置,它在没有我询问的情况下重建了它,并给了它一个新的端点名称。这就是 nslookup 和 host 命令失败的原因。
然后,一旦他们开始工作,我就开始处理我用来连接的脚本,我意识到我在 -h 参数的主机名末尾留下了 :3306 。我删除了这个,一切都开始工作了。
这就是当你对网络开发人员的脑白质切除投“反对”票时会发生的情况。
答案2
我建议尝试使用 RDS 实例的 IP 地址而不是主机名。看看是否可以直接访问端口,无需客户端包即。远程登录主机 3306。
此外,由于它们位于 VPC 中,因此请确保子网匹配。这让我以前拥有多个内部子网。