jdbc mysql ssh通道_Jdbc使用ssh通道连接Mysql
很多時候,我們可能會出現(xiàn)這種情況:我們的程序無法直接連接數(shù)據(jù)庫,而要通過某一臺linux等中間機(jī)器來實現(xiàn)一個中轉(zhuǎn),比如我們的機(jī)器是A,數(shù)據(jù)庫是C,A和C不能直接連接,但A可以連接B,B可以連接C,這時我就可以通過ssh通道來進(jìn)行數(shù)據(jù)庫連接。Jsch是純Java實現(xiàn)的SSH開源框架
可以用來執(zhí)行shell命令,實現(xiàn)sftp上傳,同時我們也可以使用它來進(jìn)行數(shù)據(jù)庫連接通道。
1、添加依賴
com.jcraft
jsch
0.1.54
org.nutz
nutz
1.r.65
com.alibaba
druid
1.1.8
mysql
mysql-connector-java
2、創(chuàng)建數(shù)據(jù)訪問對象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、數(shù)據(jù)操作相關(guān),可直接參考nutz官網(wǎng),如果不想使用連接池或nutzDao,自行創(chuàng)建原生jdbc連接或引用其他框架即可。
總結(jié)
以上是生活随笔為你收集整理的jdbc mysql ssh通道_Jdbc使用ssh通道连接Mysql的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux系统推荐(linux系统排行)
- 下一篇: 地铁跑酷如何更换账号