我想通过SSH隧道访问一个MySQL服务器。 我的理解是这应该在Mysql Workbench(Ubuntu 10上的5.2.35)本地支持。 以下工作:
打开shell
ssh -f [email protected] -L 33187:server.domain.com:3306 -N
打开MySql Workbench
使用连接方法“Standard TCP / IP”使用端口33187连接到本地主机
以下不起作用:
杀死任何SSH端口转发开始一个干净的石板。
打开Mysql Workbench
select连接方法“通过SSH的标准TCP / IP”
input下面的连接variables(这些连接variables似乎与以前的ssh命令一致):
最终目标是提供一个工作台configuration文件,其中包含许多用户(开发人员)可以简单地放在他们的机器上的服务器的正确设置(减去密码),并且能够通过mysql工作台的首页中列出的现有连接轻松访问相应的数据库。 最坏的情况下,我可以给他们一个bash脚本放在他们的.bashrc加上工作台configuration文件…但我更喜欢一个文件,如果我可以,尤其是因为我有Windows上的用户,所以如果我可以使用工作台configuration文件,那么对于windows用户和linux用户来说,它将基本上是相同的过程。
注意:目标是将mysql工作台从远程服务器上的端口3306映射到本地的某个其他端口(如示例ssh命令中所示)。 把3306作为MySQL服务器端口导致错误,因为3306在我的本地机器上不可用(因为它正在运行本地mysql实例)。 在进一步观察之后,看来这是不可能的。 如果我杀死了本地mysql服务器实例(释放端口3306),那么mysql工作台可以使用3306作为mysql服务器端口(这是远程机器上的正确端口)进行连接,但似乎没有办法同时支持本地mysql实例和远程连接通过ssh完全通过mysql工作台,因为它获取端口冲突。 使用端口映射需要一些iptables条目,或者从mysql工作台configuration中分别执行ssh tunneling。
你正在做你的ssh向前转发,即你转发本地端口3306到33187,使用-R本地主机:33187:server.domain.com:3306。 对于工作台使用MySQL服务器端口3306和MySQL主机名:localhost
什么具体是你得到的错误,我有一个问题,我自己使用自定义SSH端口,即SSH主机名server.mydomain.com:13711工作台为任何原因实际上并没有尝试连接(通过观察日志)
MySQL Hostname: localhost (or 127.0.0.1, tried it both ways) MySQL Server Port: 33187
将其更改为:
MySQL Hostname: server.domain.com MySQL Server Port: 3306
然后再试一次。