Php 防火墙后连接MySQL数据库

Php 防火墙后连接MySQL数据库,php,mysql,mysql-workbench,Php,Mysql,Mysql Workbench,我希望连接到一台服务器。它有多个虚拟机在上面运行,每个虚拟机都有一个mysql数据库。目前,我可以使用ssh连接到此服务器,然后使用mysql-u user-h host-p password从每个VM连接到任何数据库。现在我想使用MySQL工作台从本地机器连接到同一个MySQL数据库。但是有防火墙,目前我使用putty通过防火墙,使用公钥-私钥身份验证,我可以访问任何我想要的机器。我已经看到,我必须在本地安装一个MySQL服务器(我已经这样做了,我使用的是MySQL workbench)并使用

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

您可以通过SSH转发端口

ssh-NL是您的朋友,就像这样:

ssh-nl3306:localhost:3306


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

您可以通过SSH转发端口

ssh-NL是您的朋友,就像这样:

ssh-nl3306:localhost:3306


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

您需要使用ssh隧道

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

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

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

这里有一个很好的屏幕截图指南:


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

您需要使用ssh隧道

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

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

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

这里有一个很好的屏幕截图指南:


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

此任务不需要任何其他软件。MySQL工作台可以自己创建SSH隧道。在Youtube上观看我的教程如何创建连接:

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


此任务不需要任何其他软件。MySQL工作台可以自己创建SSH隧道。在Youtube上观看我的教程如何创建连接:

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



我应该在哪里编写命令ssh-NL 3306:localhost:3306我应该在工作台上指定它吗?我目前正在使用windows。@TrevDred是您使用SSH连接到服务器的同一个位置(我假设是cmd/putty)。运行时,使用workbench连接到localhostuser@192.111.0.00在我连接到油灰之后。当我输入密码提示挂起时,VM受密码保护。“知道我做错了什么吗?”崔佛瑞德,应该是“挂起”。当它“悬挂”时,隧道是开放的。继续并连接Workbench。如果您只是阅读我的答案或评论,答案就在那里。它是localhost.ssh-nl3306:localhost:3306命令应该在哪里编写?我应该在工作台上指定它吗?我目前正在使用windows。@TrevDred是您使用SSH连接到服务器的同一个位置(我假设是cmd/putty)。运行时,使用workbench连接到localhostuser@192.111.0.00在我连接到油灰之后。当我输入密码提示挂起时,VM受密码保护。“知道我做错了什么吗?”崔佛瑞德,应该是“挂起”。当它“悬挂”时,隧道是开放的。继续并连接Workbench。如果您只是阅读我的答案或评论,答案就在那里。这是本地主机。我以前已经创建了隧道。谢谢!我有点困惑,我创建了到目标localhost:3306的端口13306。为什么要指定localhost?对不起,我只是想了解我为什么这么做,以便更好地理解它。在你的问题中,你说你已经在本地安装了MySQL。这将使用端口3306已经,所以你需要隧道一个不同的。5000到65535之间的任何号码通常都是免费的。重要的是,源端口号决定了MySQL workbench连接到的端口,以便通过隧道传输到指定的目标。我很清楚,我目前已经建立了一个连接,可以绕过putty上的防火墙。现在有多个使用mysql数据库的虚拟机。我必须创建一个到每个DBs的隧道。为什么我不必为MySQL数据库指定每个虚拟机的IP地址?每个隧道指定一个目的地。因此,在单个SSH连接上使用多个源端口号-连续的端口号就可以了。每个隧道的目的地都是一个单一的端点——IP上的一个MySQL DB和端口3306。有效的方法是在本地机器上的源端口和每个MySQL主机的IP地址目标之间创建一个映射。好的,谢谢。我有我的Putty会话设置,我可以得到我的防火墙。在putty中,我使用sshuser@192