远程登录:Putty 可用,HeidiSQL 不可用

远程登录:Putty 可用,HeidiSQL 不可用

我正在尝试使用 HeidiSQL 登录我的服务器。有时我更喜欢使用 HeidiSQL,而不是控制台,因为它有 GUI 和快速导入命令。

这发生在同一台计算机上 -

使用Putty:
[服务器主机] 端口 22
SSH 私钥

控制台使用私钥连接,我输入[用户名]就可以进入,不需要密码。如果不使用 SSH 密钥,它将无法登录。

使用 HeidiSQL:
[服务器主机] 端口 3306
[用户名]
[密码为空]
[SSL 留空 - 放入 Putty 私钥 .ppk]

它挂了,然后给我错误 10060。不管我是否输入密码都无所谓。如果我将端口更改为 22,它会立即出错,并显示“在‘读取初始通信数据包’时与 MySQL 服务器失去连接,系统错误:0”。

我不确定我是否正确填写了 HeidiSQL,但在另一个数据库中我使用了完全相同的公式并且有效。

答案1

我猜 HeidiSQL 正在尝试连接服务器公共 IP 地址上的端口 3306。目前大多数发行版都将 MySQL 配置为仅在本地监听。

您可以通过在远程服务器上运行以下命令来验证这一点:

netstat -tapn | egrep "^tcp.*:3306\s+0.0.0.0.*LISTEN.*$"

如果你收到如下回复:

tcp        0      0 127.0.0.1:3306            0.0.0.0:*               LISTEN      -

这意味着 MySQL 配置为仅在本地监听。

为了解决这个问题而不必重新配置 MySQL,您可以先通过 PuTTY 设置端口转发,然后将 HeidiSQL 指向本地系统上的端口。为此,请执行以下步骤:

  • 打开PuTTY
  • 创建新会话
  • 导航左侧的树至:连接 -> SSH -> 隧道
  • 在右侧的“源端口:”框中输入“3306”。
  • 在“目标:”框中输入“127.0.0.1:3306”。
  • 单击“添加”按钮。
  • “转发端口:”框现在应包含:“L3306 127.0.0.1:3306”
  • 请确保在适当的位置填写此会话的任何其他信息,例如主机的 IP 或 FQDN,并确保在必要时包含任何 SSH 密钥。
  • 保存会话。(您需要返回树中的“会话”分支。)
  • 现在“打开”(即连接)会话。

会话连接后,您可以将 HeidiSQL 指向 127.0.0.1:3306,然后您就可以访问远程 MySQL 服务器了。这样做的好处是,连接将通过互联网加密。

相关内容