2015-10-15 90 views
1

有一台我希望连接的服务器。它有多个虚拟机在其上运行,每个虚拟机都有一个mysql数据库。我目前可以使用ssh连接到此服务器,然后使用mysql -u user -h host -p password连接到每个虚拟机的任何数据库。现在我想从本地机器上使用MySQL工作台连接到相同的MySQL数据库。但是有防火墙,目前我使用putty通过公共的私钥认证的防火墙,我可以访问任何我想要的机器。我已经看到 here我必须在本地安装MySQL服务器(我已经完成了这项工作,我正在使用mysql工作台)并使用环回地址,这样就不需要访问外部服务器。任何人都可以指出如何做到这一点的正确方向?将MySQL数据库连接到防火墙后面

回答

2

您需要使用ssh隧道。

在选项下的腻子去连接 - > SSH->隧道。从源端口13306添加隧道到目的地localhost:3306

您可以在连接之前或之后在腻子中进行此操作。最好事先做好保存会话配置,否则无法重新输入设置。

在MySQL工作台连接到localhost端口13306

有一个很好的指导与此截屏:Setting up an SSH tunnel with PuTTY

一个SSH隧道,使您的SSH客户端机器上的TCP端口,并指示对什么目的地设置为任何流量。您可以添加多个隧道,但每个隧道都必须侦听不同的源端口号。

+0

我已经创建隧道之前成为问题,谢谢!我有点困惑,我创建端口13306到目的地localhost:3306。为什么我要指定localhost?对不起,我只是想了解我为什么要这样做,这样我就能更好地理解它。 – TrevDred

+0

在你的问题中你说你已经在本地安装了MySQL。这将使用端口3306,所以你需要隧道另一个。 5000到65535之间的任何数字通常都是免费的。最重要的是,该源端口号确定的MySQL工作台连接到为了被隧道传送到指定的目的地的一个。 –

+0

我好清楚,我现在有一个连接设置为通过传递腻子防火墙。现在有多个VM与MySQL DB。我必须创建一个隧道到每个这些数据库。为什么我不必为MySQL DB指定每个虚拟机的IP地址? – TrevDred

0

您可以通过SSH转发端口。

SSH -NL是你的朋友,像这样:

ssh -NL 3306:localhost:3306 <yourserver>

然后你就可以在本地主机指向你的工作台。

+0

我在哪里写命令ssh -NL 3306:本地主机:3306 我指定它在工作台上?我目前正在使用Windows。 – TrevDred

+0

@TrevDred使用SSH连接到服务器的相同位置(我认为是cmd/putty)。在运行时,使用工作台连接到本地主机。 –

+0

我已经使用ssh -NL 3306:localhost:3306 [email protected]在连接到腻子之后。我输入密码提示时挂起的虚拟机受密码保护。任何想法我做错了什么? – TrevDred

1

您不需要任何其他软件来完成此任务。 MySQL Workbench可以自行创建SSH隧道。在Youtube上观看我的教程如何创建连接:https://www.youtube.com/watch?v=DCgRF4KOYIY

它基本上归结为创建正确的连接类型。有一个下拉菜单允许你选择一个SSH连接。输入您通过Putty连接的参数。

enter image description here