Amazon EC2到外部数据库

时间:2018-04-09 16:54:27

标签: amazon-web-services amazon-ec2 mariadb iptables rds

我已经开始研究一个新项目了。我需要连接到未从Amazon EC2实例托管在AWS上的远程MariaDB数据库。

我对数据库具有root访问权限,但它已被完全锁定。 我需要ssh到Linux机器,sudo作为root用户,然后连接到Maria DB实例,这很好

现在我尝试使用mysql命令从EC2实例连接到它。 我在MariaDB实例上创建了一个用户,可以从localhost和任何地方访问

GRANT ALL ON *.* to user@'localhost' IDENTIFIED BY 'password'; 
GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password'; 

不幸的是,这不起作用。 我检查了MariaDB实例上的IP表,它们都是空的。

还有什么我可以试试,以便我可以连接到这个数据库吗?

更新 尝试了以下iptables,仍然没有快乐

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:mysql

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:mysql 

谢谢 达明

2 个答案:

答案 0 :(得分:1)

数据库受到保护是非常正常的,因此无法从互联网访问它们。这是一种很好的安全措施。

在这种情况下连接到数据库的常用方法(用于管理或DBA访问,而不是用于应用程序访问)是使用 ssh和端口转发

您可以使用附加参数通过ssh登录,该参数将本地端口转发到远程端口。你没有指定操作系统,但是在Linux / Mac上你会怎么做:

ssh user@hostname -L 8306:DB-DNS:3306

然后,您将在localhost:8306

上连接到数据库
  • 8306可以是任意数字。它只指定要转发的本地端口
  • DB-DNS将是您从跳转到的跳转框中连接的数据库服务器的DNS名称。如果数据库位于您要连接的远程复选框上,则只需使用localhost
  • 3306是您要连接的数据库端口

因此,它有效地说"发送到我的计算机上的端口8306的任何内容都应转发到远程计算机,然后发送到DB-DNS:3306"。

Se:SSH port forwarding - Example, command, server config | SSH.COM

答案 1 :(得分:1)

达明。根据您的意见,问题几乎可以肯定是rackspaces防火墙。您的客户应该能够通过rackspaces Web控制台编辑防火墙或记录支持服务单。

我强烈建议您使用附加到实例的弹性IP而不是实例的默认公用IP。这是为了您的方便/只是一个好主意(如果你通过停止/启动实例等来放松ip。)