我已经开始研究一个新项目了。我需要连接到未从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
谢谢 达明
答案 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。)