JDBC通过SSH Tunnel连接MySQL数据库
有时候我们无法直接访问某台数据库,因为没有授权或者ip限制,但是可以通过登陆其他机器来访问,如果这台服务器安装有SSH,就可以方便的在本地通过该服务的端口映射来代理访问数据库。Navicat就有这个方便的功能,如下图所示: 由此联想到,在Java代码中能否实现类似的功能呢? 参考OSC上的这个问题: http://www.oschina.net/question/125831_79245 红薯已经给出了链接,当然,在google上搜索排第一的也是stackoverflow上的回答: http://sina.lt/gUe SSH自带有端口转发的命令,可将本地的任意可用端口转发到远程服务器的其他端口: ssh - L 1234 : localhost : 3306 mysql . server . remote JScH 就是一个实现了SSH2协议的Java包,示例代码如下: import java.sql.*; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; public class TestJSch { static int lport = 3306;//本地端口 static String rhost = "10.10.10.10";//远程MySQL服务器 static int rport = 3306;