我与私有云服务器有多个并发的+远程Java / MySQL连接,在第一种方法中,我开始将这些连接(连接,查询,关闭连接)直接建立到服务器的公共IP,正常工作,但是由于某些安全性配置将使MySQL绑定保留为localhost(将无法再使用公共IP对其进行访问),因此这种方法不是正确的方法。
所以我必须通过SSH隧道连接到MySQL。我已经看到了几种使用Java的“如何做到这一点”的回答,例如:
Connect to remote MySQL database through SSH using Java
这很清楚并且可以理解,但是我仍然不知道是否每次需要打开和关闭MySQL连接时都必须打开和关闭SSH隧道,或者可能是什么原因? SSH会话可能会遇到的麻烦。
有关在何处以及如何存储SSH凭据的任何提示将受到高度赞赏。到目前为止,我将它们使用base64保存在HKEY_LOCAL_MACHINE中,以供MySQL用户使用,但对于SSH凭据而言似乎还不够安全。
答案 0 :(得分:1)
首先,在这种情况下,我需要使用本地计算机未使用的端口之一来配置将要链接到服务器3306端口的端口。
我在Windows上工作时使用PuTTY,还有其他针对Unix的本机解决方案。
为了进行测试,我使用SSH>隧道配置下的127:0:0:1的3307端口链接到我的私有服务器的公共IP和端口 X:X:X:X:3306 >。
遵循这些教程:
http://www.ytechie.com/2008/05/set-up-a-windows-ssh-tunnel-in-10-minutes-or-less/
https://www.youtube.com/watch?v=7YNd1tFJfwc
最后,我设法成功连接到我在MySQL Workbench上配置为 127.0.0.1:3307 的私有服务器连接上,并保持SSH PuTTY隧道会话打开。
因此,就像在评论会话中所说的那样,Java代码将指向我的本地主机 127:0:0:1:3307 ,但是将使用服务器的MySQL凭据在服务器的公共IP上运行只要SSH隧道是打开的。
我将继续研究如何保持会话打开或刷新会话以避免丢失连接错误。