jdbc mysql ssh通道_Jdbc使用ssh通道连接Mysql

很多时候,我们可能会出现这种情况:我们的程序无法直接连接数据库,而要通过某一台linux等中间机器来实现一个中转,比如我们的机器是A,数据库是C,A和C不能直接连接,但A可以连接B,B可以连接C,这时我就可以通过ssh通道来进行数据库连接。Jsch是纯Java实现的SSH开源框架

可以用来执行shell命令,实现sftp上传,同时我们也可以使用它来进行数据库连接通道。

1、添加依赖

com.jcraft

jsch

0.1.54

org.nutz

nutz

1.r.65

com.alibaba

druid

1.1.8

mysql

mysql-connector-java

2、创建数据访问对象public Dao getDao(String mysqlHost, String schema, String mysqlUser, String mysqlPwd, String linuxHost, int linuxPort, String linuxUser, String linuxPwd, int localPort, int remotePort) throws Exception {

java.util.Properties config = new java.util.Properties();

config.put("StrictHostKeyChecking", "no");

JSch jsch = new JSch();

Session session = jsch.getSession(linuxUser, linuxHost, linuxPort);

session.setPassword(linuxPwd);

session.setConfig(config);

session.connect();

session.setPortForwardingL(localPort, mysqlHost, remotePort);

DruidDataSource ds = new DruidDataSource();

ds.setDriverClassName("com.mysql.jdbc.Driver");

ds.setUsername(mysqlUser);

ds.setPassword(mysqlPwd);

//此处其实是在本地开放一个端口,所以地址不用修改,同时本地需要保留该端口,不让其他程序占用

ds.setUrl("jdbc:mysql://localhost:" + localPort + "/" + schema + "");

Dao dao = new NutDao(ds);

return dao;

}

3、数据操作相关,可直接参考nutz官网,如果不想使用连接池或nutzDao,自行创建原生jdbc连接或引用其他框架即可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值