我想连接一台服务器。它上面运行着多个虚拟机,每个虚拟机都有一个mysql数据库。我当前可以使用ssh连接到此服务器,然后使用mysql -u user -h host -p password
连接到每个VM的任何数据库。现在我想使用本地机器上的MySQL工作台连接到相同的MySQL数据库。但是有防火墙,目前我使用putty通过公共私钥认证通过防火墙,我可以访问我想要的任何机器。我已经看到 here 我必须在本地安装MySQL服务器(我已经这样做了,我使用的是mysql workbench)并使用环回地址,这样你就不需要访问外部服务器了。任何人都可以指出如何做到这一点的正确方向吗?
答案 0 :(得分:2)
您需要使用ssh隧道。
在选项下的putty中,转到Connection-> SSH-> Tunnels。从源端口13306
添加隧道到目标localhost:3306
。
您可以在连接之前或之后在Putty中执行此操作。最好事先做好并保存会话配置,否则重新输入设置会很繁琐。
在MySQL工作台中,连接到localhost
端口13306
。
这里有一个很好的屏幕截图指南:Setting up an SSH tunnel with PuTTY
SSH隧道在SSH客户端计算机上创建TCP端口,并将任何流量定向到目标设置的任何内容。您可以添加多个隧道,但每个隧道必须侦听不同的源端口号。
答案 1 :(得分:1)
您不需要任何其他软件来完成此任务。 MySQL Workbench可以自己创建SSH隧道。在Youtube上观看我的教程如何创建连接:https://www.youtube.com/watch?v=DCgRF4KOYIY。
它基本上归结为创建正确的连接类型。有一个下拉列表,允许您选择SSH连接。输入您通过Putty连接的参数。
答案 2 :(得分:0)
您可以通过SSH转发端口。
ssh -NL是你的朋友:
#include<stdio.h>
int main(void)
{
int arr[3] = {2, 3, 4};
char *p;
p = (char*)arr;
printf("%d", *(int*)(p+1));
return 0;
}
然后,您可以将工作台指向localhost。