我有一个 ubuntu 服务器,我只锁定了 HTTP、HTTPS 和 SSH(端口 30000)。在这个盒子上,我有一个 MySQL 服务器,99.9% 的时间只在本地使用。时不时我想用 GUI 工具连接到 MySQL 实例,但不接触防火墙。
因此,可以进行设置以便我可以通过 SSH 连接连接到 MySQL 机器吗?我可以做任何类型的端口转发魔术吗?
ssh -L localport:127.0.0.1:remoteport user@remotehost
wherelocalport
是本地系统上的未绑定端口,remoteport
是 MySQL 侦听的端口,127.0.0.1
是远程系统上的环回地址,user
是您的用户名,remotehost
是远程系统的地址。
然后将您的 MySQL 客户端指向127.0.0.1:localport
. 连接将通过 SSH 隧道转发到远程端口。
如果您在本地机器上使用 Windows 或 Unix,PuTTY 是一个很好的工具。这是一个关于端口转发的教程:
http://www.cs.uu.nl/technical/services/ssh/putty/puttyfw.html
使用 SSH 客户端设置隧道,通过隧道将本地端口映射到远程计算机上的端口,然后使用客户端连接到本地端口。
man ssh
会有血淋淋的细节,但你最好在网上搜索一些更容易阅读的东西。
如果您使用的是 Windows,我建议您使用HeidiSQL 。它自己处理 SSH 隧道(您只需要下载 plink.exe 实用程序)。
在我看来,它是目前最好的 MySQL 工具(而且它是免费和开源的)。
有两种方法可以在远程 MYSQL 机器上使用 GUI mysql 工具。
我假设远程机器正在运行linux。
选项1。
SSH 端口转发。
ssh -L 3306:proxy:3306 用户名@remotehost
基本上,您将本地计算机上的端口 3306 转发到远程计算机上的 3306,然后您告诉图形 MYSQl 工具连接到 localhost:3306 并假设您的远程计算机正在侦听标准端口 3306
http://magazine.redhat.com/2007/11/06/ssh-port-forwarding/
ssh -D 3306 username@remotehost 也应该类似
选项 2。
如果您在远程机器上运行 xserver 并在远程机器上安装了 GUI 工具,您可以通过 SSH 连接隧道化您的 GUI。
ssh -X username@remotehost 然后从命令行在远程机器上启动你的 GUI 工具。
SQLyog 中的 SSH/HTTP 隧道很好。有公钥/私钥身份验证,增加了额外的安全层。
我建议寻找phpMyAdmin 一个基于 web 的工具来管理 MySQL,并且非常好(需要 PHP)。它可以通过普通的 Ubuntu 方法安装(例如 Synaptic)
或者如上所述使用 SSH 进行 X 隧道传输。