【问题标题】:Connect to RDS from VPS从 VPS 连接到 RDS
【发布时间】:2023-04-07 13:06:01
【问题描述】:

我正在尝试将位于我的 VPS 上的现有 mysql 数据库传输到 AWS RDS。

我已经设置了 RDS,我可以通过 ssh 连接到我的一个 ec2 实例并使用以下命令来很好地连接到服务器:

mysql -uuser -p -hxx.xx.us-west-2.rds.amazonaws.com

但是,当我尝试从我的 VPS(通过 ssh)连接时,我收到一个错误 2003,我认为这是权限被拒绝。

我如何设置我的安全组似乎并不重要。我将入站设置为允许来自我的服务器 ip 的端口 3306,但这不起作用,我什至尝试在我的入站规则中允许来自任何地方的所有端口上的所有流量,但我仍然无法连接。出站一直是完全开放的。

如果有人能看到我遗漏的任何东西,我将非常感谢您的帮助。

谢谢。

【问题讨论】:

  • 您使用的是RDS,还是安装在EC2机器上的mysql?这是两件不同的事情,你似乎把它们弄混了。您可以在 EC2 机器上允许“所有端口上的所有流量”,但不允许 RDS(另一个安全组或 CIDR/IP)。
  • 我正在使用 rds。 EC2 上没有数据库,但 EC2 实例上的应用程序将使用数据库的 RDS。我有一个想要从我的 VPS 转移到 RDS 的现有数据库。在我允许安全组中所有端口上的所有流量(安全组用于 RDS 而不是 EC2)之前,我曾尝试只允许我的 CIDR/IP。这不成功。
  • 根据下面的答案,确保您 1) 使用创建实例时提供的主机字符串、用户和数据库 2) 将 EC2 安全组添加到 RDS 安全组 3) 可能转储将数据库从您的 VPS 传输到 EC2 机器,然后从那里将其导入 RDS。

标签: mysql amazon-web-services ssh amazon-ec2 amazon-rds


【解决方案1】:

如果您想从外部访问它,请确保您的 RDS 实例设置为 public。如果实际上它不可公开访问,那么您将需要重新创建实例并导入数据,或者拍摄快照并从快照重建您的 RDS 实例。

您只有一次修改它的机会,那就是在创建实例时。

如果您这样做,请确保您的安全组仅允许来自特定 IP 地址,或者如果您使用 MySQL 工作台,而不是通过 EC2 实例使用 SSH 密钥使用 SSH 隧道。

【讨论】:

    【解决方案2】:

    user 是您在 RDS 中手动创建的用户,还是您在创建实例时创建的管理员用户?如果是前者,请确保您已从远程 VPS 授予该用户的访问权限。

    此外,请确保您可以从您的 VPS 打开到数据库的 TCP 连接。试试:

    $ nc -v -z xx.xx.us-west-2.rds.amazonaws.com 3306

    如果此处连接成功,但您仍然无法连接 mysql CLI,则您的用户名/密码/数据库连接信息有问题。

    【讨论】:

    • 安装 netcat,如果你有的话,可以使用 telnet。
    猜你喜欢
    • 2016-04-23
    • 2018-05-19
    • 2019-11-12
    • 2020-12-26
    • 1970-01-01
    • 2016-02-15
    • 2014-02-10
    • 2021-06-10
    • 2016-11-21
    相关资源
    最近更新 更多