mysql over ssh over non-standard port

时间:2011-07-08 19:18:45

标签: mysql ssh ssh-tunnel

我在计算机A上运行mysql,可以A~ $ mysql -u punkish -p database连接到它。依此类推。

我可以访问运行mysql的计算机B.我可以通过端口2200使用ssh密钥对设置进入B,并且一旦进入,我可以像这样连接到数据库

A~ $ ssh -p 2200 punkish@B
B~ $ mysql -u punkish -p database

但是,我想在我的计算机上通过ssh设置端口转发,因此我在计算机A上的端口3307上为mysql发出的所有请求实际上都被发送到B上的端口3306.这将允许我使用想要的gui程序连接到mysql,但不能通过隧道。所以,我做了以下

A~ $ ssh -p 2200 -L 3307:B:3306 punkish@B
B~ $

以上记录我直接进入B.我不确定隧道是否已建立,但我认为是。但是,以下失败(在另一个终端

A~ $ mysql -P 3307 -u punkish -p
Enter password:
ERROR 1045 (28000): Access denied for user 'punkish'@'localhost' (using password: YES)

这是有趣的事情 - 我有另一个名为Sequel Pro(用于Mac OS X的桌面MySQL客户端)的gui程序,并且能够通过ssh与mysql @ B建立连接就好了。所以,我知道一些有用的东西......我只是不知道怎么做,所以我可以为另一个gui程序启用它。

1 个答案:

答案 0 :(得分:1)

如果你没有指定主机名,mysp通常会尝试使用套接字文件。因此,作为mysql命令的一部分,请指定-h 127.0.0.1(注意我没有说localhost,它对待它们的方式不同)。这基本上强制TCP连接而不是套接字文件连接。