2010-11-16 74 views
2

我正在使用MySQL的Amazon EC2实例,并且需要修改我的perl脚本以使用ssh隧道(而不是普通的旧主机名:端口)连接到数据库。任何帮助表示赞赏如何使用ssh隧道连接到MySQL

感谢

+0

这不是一个真正的Perl问题 - 只需设置一个ssh隧道,以便明显的mysql位置就是隧道的地址。 – Ether 2010-11-16 18:05:07

+0

是的..看起来没错。 – prat 2010-11-16 18:21:57

+0

如果您找到可帮助您的答案,请点击旁边的勾号,以便其他人可以在将来找到正确的答案。 – 2010-11-17 13:16:33

回答

1

建立SSH隧道连接好后不同之处仅主机名和它在那一刻127.0.0.1(本地主机)

0

我不知道SSH,但你可以encrypt connections between your application and your DB Instance using SSL,那会是sufficent适合你?

+0

不完全一样。连接将被加密,但你仍然暴露你的MySQL端口。 – chris 2010-11-16 17:58:43

+0

我其实并不在乎加密,但Amazon AWS允许远程机器只通过SSH隧道连接到他们的EC2实例。因此,例如,我可以使用工作台的连接选项(TCP/IP over ssh)将本地计算机上的mysql工作台连接到EC2 mysql服务器,其中必须指定ssh主机名(使用密钥对)和数据库主机名(在使用用户名/密码的本地主机上)。我猜测应该有一个类似perl dbi connect的机制。 – prat 2010-11-16 18:02:29

+0

默认情况下,我认为只有端口22对于ec2实例是开放的。您可以通过更改ec2管理控制台中的安全组来打开Mysql端口。 – 2012-06-29 19:04:19

3

打开隧道:

ssh -fNL 3306:localhost:3306 [email protected] 

然后连接到本地主机:3306

+0

autossh将有助于保持链接打开。 http://www.harding.motd.ca/autossh/ – Leolo 2010-11-16 17:59:23

0

关于chris回答的一个注意事项 - 在一些设置“localhost”和“127.0.0.1”上有所不同。在我的情况下,本地主机没有工作,而127.0.0.1确实工作完美。

1

MySQL尝试映射localhost [:port]连接以使用本地(UNIX)套接字;你应该使用127.0.0.1作为tcp/ip套接字。