【问题标题】:Connect MySQL database behind firewall连接防火墙后的 MySQL 数据库
【发布时间】:2015-10-16 14:47:34
【问题描述】:

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

【问题讨论】:

    标签: php mysql mysql-workbench


    【解决方案1】:

    您需要使用 ssh 隧道。

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

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

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

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

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

    【讨论】:

    • 我之前已经创建了隧道,谢谢!我有点困惑,我将端口 13306 创建到目标 localhost:3306。为什么要指定本地主机?抱歉,我只是想了解我为什么这样做,以便更好地理解它。
    • 在你的问题中你说你已经在本地安装了 MySQL。这将已经使用端口 3306,因此您需要隧道另一个。 5000 到 65535 之间的任何数字通常都是免费的。重要的是源端口号决定了 MySQL 工作台连接到哪个端口,以便通过隧道连接到指定的目标。
    • 我很清楚我目前有一个连接设置为绕过腻子上的防火墙。现在有多个带有 mysql 数据库的虚拟机。我必须为这些数据库中的每一个创建一个隧道。为什么我不必为 MySQL DB 指定每个 VM 的 IP 地址?
    • 每条隧道指定一个目的地。因此,在单个 SSH 连接上使用多个源端口号 - 连续的数字很好。每个隧道的目的地将是一个端点——IP 和端口 3306 上的单个 MySQL DB。您实际上是在本地计算机上的源端口和每个 MySQL 主机的 IP 地址目的地之间创建映射。
    • 好的,谢谢。我设置了 Putty 会话,并且可以获得防火墙。在腻子中,我使用 ssh user@192.1.1.00 连接到虚拟机,然后使用 mysql -uuser -ppasswrd 连接到 MySQL 数据库。对于我的隧道,我应该指定目标 @ 192.1.1.00:3306 和源端口 13306 吗?我试过了,它没有用,但应该吗?
    【解决方案2】:

    您可以通过 SSH 转发端口。

    ssh -NL 是你这样的朋友:

    ssh -NL 3306:localhost:3306 <yourserver>

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

    【讨论】:

    • 我在哪里写命令 ssh -NL 3306:localhost:3306 我在工作台上指定它吗?我目前正在使用 Windows。
    • @TrevDred 使用 SSH 连接到服务器的相同位置(我假设是 cmd/putty)。运行时,使用工作台连接到本地主机。
    • 连接腻子后,我使用了 ssh -NL 3306:localhost:3306 user@192.111.0.00。当我输入密码提示时,VM 受密码保护,只是挂起。知道我做错了什么吗?
    • @TrevDred,它应该“挂起”。当它“挂起”时,隧道是打开的。继续连接 Workbench。
    • 如果您只是阅读我的答案或 cmets,答案就在那里。这是本地主机。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-17
      • 1970-01-01
      • 1970-01-01
      • 2020-04-20
      相关资源
      最近更新 更多