1

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

我可以访问也运行 mysql 的计算机 B。我可以通过设置 ssh 密钥对通过端口 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 程序启用它。

4

1 回答 1

2

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

于 2011-07-08T19:21:27.707 回答