问题描述
我在 Kinsta 上托管了一个 wordpress 网站。
我正在尝试使用 SSH 从 PHPStorm 远程连接到其 MysqL 数据库。
SSH 连接成功,但是当我尝试连接到主数据库时,出现以下错误:
[08S01]
Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
java.io.EOFException: Can not read response from server. Expected to read 4 bytes,read 0 bytes before connection was unexpectedly lost.
我尝试联系 Kinsta 支持,但他们对此没有任何正确的答案。
请注意:如果我从 MysqL Workbench 连接到同一个数据库,它工作正常。只有当我从 PHPStorm 连接时才会这样!
有人可以帮我吗?
解决方法
我找到了解决方案。我认为这可能对面临同样问题的任何人都有帮助。
步骤如下;
为了让 PHP Storm 直接与数据库通信,它需要为正在使用的 SSH 隧道设置端口转发。
您需要将端口站点的端口绑定到本地端口并手动测试连接
您可以在 PHP Storm 中打开两个终端。 在第一个中,您可以运行以下命令并输入 SSH 密码
ssh -L 8888:127.0.0.1:3306 SSHUSERNAME@SITEEXTERNALIP -p SSHPORT -NnT
确保用 Kinsta 中显示的正确详细信息替换 SSH 用户名、SITE EXTERNAL IP 和 SSHPORT分别是仪表板。
在第一个成功连接到 SSH 后,打开第二个选项卡并运行 nc 命令
nc 127.0.0.1 8888
如果可行,当通过 PHP Storm 连接到数据库时使用 SSH 隧道时,您可以在数据库连接设置中使用连接隧道 IP (127.0.0.1) 和连接隧道端口 (8888)。