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连接或引用其他框架即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/347849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2018年机器学习趋势与Apache Kafka生态系统相结合

在慕尼黑举行的OOP 2018大会上,我介绍了有关使用Apache Kafka生态系统和诸如TensorFlow,DeepLearning4J或H2O之类的深度学习框架构建可扩展,关键任务微服务的演讲的更新版本。 我想分享更新后的幻灯片,并讨论一些有关最新趋势的更…

Java基本语法(13)--条件分支switch-case结构

基本格式结构: switch (表达式/变量) {case 常量1:执行语句1; //情况1case 常量2:执行语句2; //情况2... ... ...default: 以上情况都不满足时执行语句; }说明: switch结构中的表达式/变量只能是如下6种数据类型之一&#xff…

小米岭南通服务器维护,小米岭南通交通联合卡内测开启

原标题:小米岭南通交通联合卡内测开启IT之家12月21日消息 小米岭南通交通联合卡内测开启招募报名,持小米8(含探索版、屏幕指纹版)、小米MIX 系列(不含MIX 3)、小米Note 3/2、小米6/5s/5s Plus手机的用户可开通尝鲜。支持系统小米8和MIX 2S最低支持8.12.2…

mysql 大于号 优化_SQL优化 MySQL版 - 避免索引失效原则(二)

避免索引失效原则(二)注:继上一篇文章继续讲解:避免索引失效原则(一)https://www.cnblogs.com/StanleyBlogs/p/10482048.html#4195062作者 : Stanley 罗昊【转载请注明出处和署名,谢谢!】体验SQL优化中的概率情况在上一…

js中数组增加添加元素的push方法

特别注意:push()方法返回的是增加后新数组的长度,即元素个数。 var arryTest ["星期一","星期二"]; var add "星期三"; var length arryTest.push(add); //length3格式结构&#xf…

ajax处理返回的xml数据,使用AJAX调用WebService返回xml不返回json原因以及解决办法...

初次尝试用AJAX调用webservice,结果无论怎么设置webservice返回的都是xml对象,一般的jquery处理json是更方便的。webservice理论上将下面这段代码按照说明取消注释,就可以返回json数据了。// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服…

mysql 唯一索引 死锁_MySQL 死锁套路:唯一索引 S 锁与 X 锁的爱恨情仇

毫不夸张的说,有一半以上的死锁问题由唯一索引贡献,后面介绍的很多死锁的问题都跟唯一索引有关。这次我们讲一段唯一索引 S 锁与 X 锁的爱恨情仇我们来看一个简化过的例子# 构造数据CREATE TABLE t1 (id int(11) NOT NULL AUTO_INCREMENT,name varchar(1…

ejb 示例 2018_EJB钝化和激活示例

ejb 示例 2018在本教程中,我们将了解状态Java企业会话Bean中激活和钝化的工作方式。 1.简介 有状态会话Bean通常保存有关特定客户端的信息,并在整个会话中保存该信息。 但是,事实是,客户端会话往往会在相当长的时间内保持活动状态…

js微信小程序页面左上角返回跳转指定页面

微信小程序非导航栏tabBar页面左上角返回默认返回上一次的页面(即进入当前页面的前一页面),如果需要自定义页面,可以通过js中onUnload函数进行指定页面跳转。 ①关闭所有页,打开url指定页面 onUnload: function () {…

服务器mysql显示链接次数太多,服务器mysql显示链接次数太多

服务器mysql显示链接次数太多 内容精选换一换在本章节中,您将会把游戏应用部署到CCE云容器引擎中,您需要执行以下操作:创建集群:集群是运行应用的逻辑分组,包含一组云服务器资源,每个节点对应一台云服务器。…

laravel5.6 mysql_快速入门 |《Laravel 5.6 中文文档 5.6》| Laravel China 社区

本文档最新版为 8.x,旧版本可能放弃维护,推荐阅读最新版!数据库:入门简介Laravel 能使用原生 SQL、查询构造器 和 Eloquent ORM 在各种数据库后台与数据库进行非常简单的交互。当前 Laravel 支持四种数据库:MySQLPostgresSQLiteSQ…

计算机二级web题目(5)--js(Javascript)基础

1 [单选题] 在以下选项中,不合法的标识符是(A)。 A. a*b B. small C. score D. average grade 解析&#xff1a;点击查看标识符命名规则 2 [单选题]在HTML页面中哪些部分能够插入JavaScript?&#xff08;C&#xff09; A. <body>部分 B. <head>部分 C. <body&g…

使用JUnit 5在Mockito中方便地进行模拟–官方方式

从版本2.17.0开始&#xff0c;如果使用JUnit 5&#xff0c; Mockito提供了官方&#xff08;内置&#xff09;支持来管理模拟生命周期。 入门 为了利用该集成&#xff0c;需要在JUnit 5的junit-platform-engine旁边添加Mockito的mockito-junit-jupiter依赖项&#xff08;有关详…

esp32搭建文件服务器,ESP32入门示例 - SD卡Web服务器

这个是来自ESP32官方示例的改版&#xff0c;官方的示例由于存在一些问题所以我进行了修改原本的示例有点逻辑上的问题&#xff0c;所以进行了一些修改主要修改有&#xff1a;1.新增SD卡测试部分 复制自官方SD卡示例2.新增一个根目录页&#xff0c;访问根目录就可以看到3.修改了…

mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置

一、 MySQLMyCat分库分表1 MyCat简介java编写的数据库中间件Mycat运行环境需要JDK。Mycat是中间件&#xff0c;运行在代码应用和MySQL数据库之间的应用。前身&#xff1a; corba&#xff0c;是阿里开发的数据库中间件&#xff0c;实现MySQL数据库分库分表集群管理的中间件&…

字符串String截取字符char

字符串类的charAt() 方法可返回指定位置的字符。 stringObject.charAt(index)从键盘输入获取了一个字符串&#xff0c;将其数据类型转换为字符型。 Scanner scan new Scanner(System.in); String str scan.next(); char ca str.charAt(0);示例&#xff1a; import java.u…

gradle构建工具_Gradle:我们需要另一个构建工具吗?

gradle构建工具在Java开发的早期&#xff0c;我们要么没有太多的构建工具需求&#xff0c;要么就使用了其他环境中的工具。 我仍然记得构建shell脚本并创建用于开发Java的文件。 生成文件特别有趣&#xff0c;因为这是一个在设计时就没有考虑到Java的工具。 迁移到不同的操作系…

db platform mysql_数据库移植: 从Oracle移植到MySQL 注意databasePlatform | 学步园

采用Spring框架、JPA操作数据库开发一个小网站过程中&#xff0c;遇到需要将数据库从Oracle移植到MySQL&#xff0c;在进行单元测试时遇到如下错误&#xff1a;Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown table SEQ_GEN_IDENTIT…

Java基本语法(14)--for循环结构

循环结构&#xff1a;在某些条件满足的情况下&#xff0c;反复执行特定代码的功能。 基本格式&#xff1a; for (①初始化部分; ②循环条件部分; ④迭代部分)&#xff5b; ③循环体部分; &#xff5d;如果①&#xff0c;④部分多条语句&#xff0c;语句之间用“&#xff0c;”…

Java 8中的功能接口是什么? @功能注释和示例

函数接口是Java 8最重要的概念之一&#xff0c;实际上为lambda表达式提供了动力&#xff0c;但是许多开发人员没有首先了解函数接口在Java 8中的作用就花了很多精力来理解它&#xff0c;并花时间学习lambda表达式和Stream API。除非您知道什么是功能接口以及lambda与它之间的关…