2010-11-16 73 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套接字。