【问题标题】:mysql over ssh over non-standard portmysql over ssh over 非标准端口
【发布时间】:2011-10-01 13:01:48
【问题描述】:

我在电脑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 程序启用它。

【问题讨论】:

标签: mysql ssh ssh-tunnel


【解决方案1】:

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

【讨论】:

  • 好的。我实际上已经尝试过并且失败了,但无论如何还是再次尝试了。我得到一个不同的错误,就像A ~$mysql -P 3307 -p -h 127.0.0.1 -u punkish Enter password: ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
  • 不知道。由于我对您的隧道设置一无所知,因此这是我能提供的最好的。尝试运行nmap -Pn -p3307 localhost 以确保端口实际上正在正确侦听。
  • 我在 Mac OS X 上,据我所知,上面没有 nmap
  • @punkish:是的,您需要安装它。我对此无能为力,我对 OS X 没有任何经验。nmap 只是连接到指定的端口并报告它是否响应。在 OS X 下可能有其他程序可以执行此操作(端口扫描)。
猜你喜欢
  • 2021-07-27
  • 1970-01-01
  • 2011-05-12
  • 2017-02-12
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
  • 2012-03-08
  • 2023-03-03
相关资源
最近更新 更多