默认情况下,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
这告诉我,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"
答案 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
似乎对我来说很好