无法从 PhpStorm 远程连接到 KINSTA 站点的 MySQL
Posted
技术标签:
【中文标题】无法从 PhpStorm 远程连接到 KINSTA 站点的 MySQL【英文标题】:Unable to connect to KINSTA site's MySQL remotely from PhpStorm 【发布时间】:2021-01-10 12:16:20 【问题描述】:我有一个托管在 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 连接时!
谁能帮帮我?
【问题讨论】:
【参考方案1】:我找到了解决方案。我认为这可能对面临相同问题的任何人有所帮助。
步骤如下;
为了让 PHP Storm 直接与数据库通信,它需要为正在使用的 SSH 隧道设置端口转发。
您需要将端口站点的端口绑定到本地端口并手动测试连接
您可以在 PHP Storm 中打开两个终端。 在第一个中,您可以运行以下命令并输入 SSH 密码
ssh -L 8888:127.0.0.1:3306 SSHUSERNAME@SITEEXTERNALIP -p SSHPORT -NnT
确保将 SSH USERNAME、SITE EXTERNAL IP 和 SSHPORT 替换为 Kinsta 中显示的正确详细信息分别是仪表板。
在第一个选项卡中成功连接到 SSH 后,打开第二个选项卡并运行 nc 命令
nc 127.0.0.1 8888
如果可行,当通过 PHP Storm 连接到数据库时使用 SSH 隧道时,您可以在数据库连接设置中使用连接隧道 IP (127.0.0.1) 和连接隧道端口 (8888)。
DB SETTINGS after NC COMMAND
【讨论】:
PhpStorm 已经支持 SSH(所以你不需要在它之外做任何事情)。你试过吗?屏幕截图上的 SSH/SSL 选项卡?它将建立 SSH 隧道并使用它连接到这样的远程数据库。 jetbrains.com/help/phpstorm/configuring-ssh-and-ssl.html#ssh 由于 PhpStorm/DataGrip 通过 TCP/IP 建立与数据库的连接,它需要准确的端口或端口范围才能连接。很明显,您需要端口转发,您可以通过 SSH/SSL 选项卡来完成。【参考方案2】:对于 Kinsta DB,尝试连接到端口 3307,这是 3306 的 C2S 端口转发。这对我有用。
127.0.0.1:3307
【讨论】:
以上是关于无法从 PhpStorm 远程连接到 KINSTA 站点的 MySQL的主要内容,如果未能解决你的问题,请参考以下文章