我正在尝试使用 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 服务器了。这样做的好处是,连接将通过互联网加密。