在防火墙后连接 MySQL 数据库

Connect MySQL database behind firewall

有一个我想连接的服务器。它有多个虚拟机 运行 每个虚拟机都有一个 mysql 数据库。我目前可以使用 ssh 连接到此服务器,然后使用 mysql -u user -h host -p password 从每个 VM 连接到任何数据库。现在我想从我的本地计算机使用 MySQL workbench 连接到相同的 MySQL 数据库。但是有防火墙,目前我使用 putty 通过 public 私钥身份验证通过防火墙,我可以访问任何我想要的机器。我已经看到 here 我必须在本地安装一个 MySQL 服务器(我已经这样做了,我正在使用 mysql workbench)并使用环回地址,在那您不需要访问外部服务器的方式。谁能指出如何做到这一点的正确方向?

您可以通过 SSH 转发端口。

ssh -NL 是你的朋友:

ssh -NL 3306:localhost:3306 <yourserver>

然后您可以将 workbench 指向本地主机。

您需要使用 ssh 隧道。

在选项下的 putty 中转到 Connection->SSH->Tunnels。添加从源端口 13306 到目标 localhost:3306.

的隧道

您可以在连接之前或之后在 Putty 中执行此操作。最好事先做好并保存会话配置,否则必须重新输入设置会很乏味。

在 MySQL workbench 连接到 localhost 端口 13306

这里有一个很好的屏幕截图指南:Setting up an SSH tunnel with PuTTY

SSH 隧道在您的 SSH 客户端计算机上创建一个 TCP 端口,并将任何流量定向到目标设置的任何位置。您可以添加多个隧道,但每个隧道都必须侦听不同的源端口号。

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

本质上归结为创建正确的连接类型。有一个下拉列表允许您 select SSH 连接。输入您用于通过 Putty 连接的参数。