2014-10-30 132 views
2

我试图将位于我的VPS上的现有mysql数据库传输到AWS RDS。从VPS连接到RDS

我已经RDS设置,我能够通过SSH连接到我的EC2实例之一,使用这个命令连接到服务器就好了:

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

然而,当我尝试从连接我的VPS(通过SSH)我收到一个错误2003,我相信是权限被拒绝。

我怎么设置我的安全组似乎没有关系。我将入站设置为允许从我的服务器IP访问端口3306,但这并不起作用,我甚至试图在入站规则的任何位置允许所有端口上的所有流量,但我仍然无法连接。出境一直是完全开放的。

如果任何人都可以看到我缺少的任何东西,我真的很感激一些帮助。

谢谢。

+0

您是否正在使用RDS或安装在EC2计算机上的mysql?这些是两个不同的东西,你似乎混在一起了。您可以允许EC2计算机上的“所有端口上的所有流量”,但不允许RDS(另一个安全组或CIDR/IP)。 – 2014-10-30 18:04:43

+0

我正在使用rds。 EC2上没有数据库,但EC2实例上的应用程序将使用RDS作为数据库。我有一个现有的数据库,我想从我的VPS转移到RDS。在我允许安全组中所有端口上的所有通信(安全组用于RDS而非EC2)之前,我只尝试过允许我的CIDR/IP。这是不成功的。 – mbacon40 2014-10-30 18:44:31

+0

根据以下答案,确保您1)正在使用创建实例时提供的主机字符串,用户和数据库2)将EC2安全组添加到RDS安全组3)可能将数据库从VPS转储到EC2机器并从那里将其导入RDS。 – 2014-10-30 19:10:22

回答

3

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

您只有一次机会修改它,这是在实例创建。

enter image description here

如果你这样做,那么要确保安全组只能从一个特定的IP地址允许或者,如果你使用MySQL工作台通过EC2实例使用SSH密钥,而使用SSH隧道。

0

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

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

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

如果连接成功,但这里仍无法与MySQL CLI连接,您的用户名/密码/数据库连接信息的问题。

+0

当我运行这个时,我得到-bash:nc:命令未找到 – mbacon40 2014-10-30 18:52:43

+0

安装netcat,或者使用telnet,如果有的话。 – 2014-10-30 19:15:48