我想用ssh中的SquirreL工具连接到我的数据库。 可能吗? 可悲的是,我没有其他选择这个服务器,所以如果它不工作,我将不得不更换工具。
答案 0 :(得分:6)
没有办法直接通过Squirrel进行,但是设置Squirrel可以使用的ssh隧道是非常容易的(当你知道如何)。
我忘记了怎么样,来到这里寻找能让我恢复活力的东西...但我在StackOverflow上没有运气,所以我做了研究,我将解决方案留在这里以供将来使用......希望它也能帮助别人。
创建ssh隧道:
$ ssh -v -N -L3307:localhost:3306 remotehostname
我选择使用端口3307,因为我还在端口3306上本地运行MySQL。
详细信息(或者您可以跳到第2步):
3307
是您要使用本地来引用远程系统的端口。
我认为localhost
这里指的是远程系统,从它自己的角度来看,所以localhost:3306
引用了远程系统上的标准MySQL端口。
-v
是可选的;它只是让ssh的输出更加冗长,这有助于排除故障。你不会使用运行ssh
的窗口来做任何事情,所以不妨让它变得很健谈。
-N
表示你对在远程主机上实际打开shell不感兴趣。我们这里仅用于数据库连接。
如果您打开了详细选项,则会看到如下消息:
debug1: Local connections to LOCALHOST:3307 forwarded to remote address localhost:3306
如果你 没有打开详细输出,你只会看到像Authenticated to 10.0.1.234 (via proxy).
单击测试然后连接以测试您的连接。
如果您使用ssh
选项运行-v
,则可以在尝试通过Squirrel进行连接时观看该窗口。你应该看到类似的东西才能成功连接:
debug1: Connection to port 3307 forwarding to localhost port 3306 requested.
debug1: channel 2: new [direct-tcpip]
debug1: channel 2: free: direct-tcpip: listening port 3307 for localhost port 3306, connect from 127.0.0.1 port 54536 to 127.0.0.1 port 3307, nchannels 3
完成数据库后,只需在ssh窗口中点击 Ctrl C 即可终止隧道(如果你离开{{1选项,我猜你必须按 Ctrl D 关闭shell。
答案 1 :(得分:1)
可悲的是,squirrelSQL不支持ssh隧道。幸运的是,MySQL Workbench确实支持ssh隧道,所以如果你连接到MySQL数据库,我建议使用它。
使用不同工具的替代方法是使用ssh端口转发。基本上,您可以将端口3306(或MySQL数据库使用的任何端口)从远程盒转发到本地盒。网上有很多关于如何做到这一点的指南。一旦建立了具有端口转发功能的隧道,您就可以使用本地连接字符串,例如' localhost:3306'。连接到远程数据库。将ssh连接字符串放在.sh或.bat文件中是个好主意,因为当你第一次需要连接数据库时,你必须运行它。