通过PhpStorm

时间:2017-11-21 17:21:27

标签: mysql sockets phpstorm jetbrains-ide ssh-tunnel

默认情况下,PhpStorm的数据库管理器运行良好。但目前在一个特殊的提供商(1u1.de)上我有一些麻烦来完成这项工作。

我可以通过SSH连接到提供商。如果我想连接到MySQL数据库,我必须使用:

mysql --host=localhost --user=dbo123123123 -S /tmp/mysql5.sock --password='123123123';

这可以通过CLI在服务器上运行良好,但我没有找到通过PhpStorm连接到此数据库的方法。

对我而言,似乎" socket-connection"可能是问题。有没有人知道如何让它发挥作用?

解决方案的一部分(?!):

也许是解决方案的第一部分,我发现你可以通过这种方式将Socket作为自己的套接字转发到本地PC:

ssh -nNT -L $(pwd)/yourLocal.sock:/var/run/mysqlREMOTEMYSQL.sock user@somehost

Source of Information

这告诉我,Socket已经建立:

netstat -ln | grep mysql unix 2 [ ACC ] STREAM LISTENING 3713865 /myFolder/mysql5.sock

但是我仍然无法通过以下方式连接到此Socket:

mysql -h localhost --protocol=SOCKET -u'username' -p'mypassword' -S /myFolder/mysql5.sock

得到此错误:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 95 "Operation not supported"

2 个答案:

答案 0 :(得分:0)

使用SSH设置端口转发,这样您就可以安全地连接到数据库,而不会将其暴露给全世界。

在ssh上,使用ID loc col col_16 col_17 col_18 4568 12P Effective Ineffective Effective Developing 8521 02F Ineffective Developing Effective Highly Effective 参数建立隧道。

-L

这将在您的本地计算机上打开ssh -L <local_port>:<remote_host>:<remote_port> user@host ,然后将所有数据包重定向到隧道的另一侧,而不是<local_port>

在您的情况下,您可能想尝试这样的事情:

<remote_host>:<remote_port>

建立隧道后,您将能够通过本地端口连接到数据库。

从本地计算机,而不是1u1主机,

ssh -L 3306:127.0.0.1:3306 user@mybox.1u1.de

如果此方法正常,您应该能够将PhpStorm配置为使用相同的地址mysql -u <user> -p --host 127.0.0.1 --port 3306

SSH隧道需要在您需要连接到数据库的整个时间内保持打开状态。

答案 1 :(得分:0)

ssh -L /tmp/mysql.sock:/var/run/mysqld/mysqld.sock sshuser@remotehost

然后

mysql -h localhost --protocol=SOCKET -u'username' -p'mypassword' -S /tmp/mysql.sock

似乎对我来说很好