pom.xml

    <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency> <dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>0.1.54</version>
</dependency>

config.properties

#host
host_ip=192.168.159.112
host_name=root
host_password=**** #mysql
ip=127.0.0.1
db=test
name=root
password=****

代码

package com.myproject.demo;

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session; import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties; /**
* Hello world!
*
*/
public class App { private static Session session; public static void main( String[] args ) throws IOException { InputStream resourceAsStream = ClassLoader.getSystemClassLoader()
.getResourceAsStream("config.properties");
Properties properties = new Properties();
properties.load(resourceAsStream);
String ip = properties.getProperty("ip");
String db = properties.getProperty("db");
String name = properties.getProperty("name");
String password = properties.getProperty("password");
String host_ip = properties.getProperty("host_ip");
String host_name = properties.getProperty("host_name");
String host_password = properties.getProperty("host_password"); int localPort = 0;
try {
localPort = openSSH(host_ip,host_name,host_password);
} catch (Exception e) {
e.printStackTrace();
} try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection connection = null;
try {
connection = DriverManager.getConnection("jdbc:mysql://"+ip+":"+localPort+"/"+db+"?characterEncoding=utf8&useSSL=false",name,password);
} catch (SQLException e) {
e.printStackTrace();
} String sql = "select version()";
Statement statement = null;
try {
statement = connection.createStatement();
ResultSet rs = statement.executeQuery(sql);
while (rs.next()){
String version = rs.getString("version()");
System.out.println("mysql version: "+version);
}
} catch (SQLException e) {
e.printStackTrace();
} closeSSH();
} public static int openSSH(String host,String username,String password) throws Exception{ JSch jSch =new JSch();
session = jSch.getSession(username,host,22);
session.setPassword(password);
session.setConfig("StrictHostKeyChecking", "no");
session.connect();
System.out.println(session.getServerVersion());
int assinged_port = session.setPortForwardingL(3307,host,3306);
System.out.println("localhost:"+assinged_port);
return assinged_port; } public static void closeSSH(){
session.disconnect();
}
}

  

Jdbc使用SSH连接mysql的更多相关文章

  1. kettle通过SSH连接Mysql数据库(SSH隧道)

    kettle通过SSH连接Mysql数据库(SSH隧道) Kettle无法直接连接使用SSH通道的MySQL,通过SSH隧道(推荐)或者需要借助工具PuTTY(不用时需要注销不推荐),具体操作如下所示 ...

  2. 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类

    一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...

  3. JDBC测试计划-连接mysql

    一.测试环境准备   mysql:5.5  JDBC驱动:mysql-connector-java-5.1.30.jar 文件复制到JMeter/lib目录下  JMeter:jmeter-3.2   ...

  4. mysql——jdbc驱动下载&连接mysql例子

    mysql-connector-java-5.1.46.zip[解压后里面jar文件就是所需要的] https://dev.mysql.com/get/Downloads/Connector-J/my ...

  5. jdbc知识点(连接mysql)

    jdbc连接mysql 1.JDBC简介 JDBC: 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库.从根本上来说,JDBC ...

  6. sqlyog通过跳板机ssh连接mysql数据库

    方法一: 方法二: 在跳板机上启动sh脚本做ssh端口转发,客户端配置连接 10.0.0.1的8306端口即可 jdbc:mysql://10.0.0.1:8306/testdb?useUnicode ...

  7. JDBC入门之一--连接Mysql实验

    工具:mysql-connector-java-5.1.40.eclipse 1)首先要将mysql-connector-java包整合到eclipse中,右击项目,然后选择build path,出现 ...

  8. C#通过SSH连接MySql

    出于安全考虑,有的时候数据库服务器只能通过SSH访问,比如MySql服务装在了服务器A上,并且A机器只允许B机器才能访问,而部署环境可能在C机器上,这时候就要C服务器通过B服务器连接A服务器,这时候就 ...

  9. jdbc java远程连接mysql数据库服务器

    首先,需要注意以下几点: 1.手机需要获得可以访问网络的权限: 2.导入的jdbc驱动的版本需要与mysql服务器的版本相近: 3.mysql默认的访客是只允许本机(localhost),不允许其他主 ...

随机推荐

  1. 《DenseNet Models for Tiny ImageNet Classification》课程设计论文

    paper : <DenseNet Models for Tiny ImageNet Classification>     https://arxiv.org/ftp/arxiv/pap ...

  2. java8_api_日期时间

    日期时间处理    Date类,其中很多方法已经不用了    Calendar类,java.util包中的抽象类        Date类,其对象代表即时时间,存储的是从19700101000000距 ...

  3. 目标文件obj的各段 2

    #程序的自我修养  page68

  4. 16.2 在SecureCRT编写C程序不高亮显示

    打开“会话选项”>在类别里找“终端”>选择“仿真”>终端的下拉里选择“Xtrem”>在“ANSI颜色”里打钩,在“使用颜色方案”打钩

  5. 自己DIY出来一个JSON结构化展示器

    说来也巧,这个玩意,一直都想亲手写一个,因为一直用着各种网上提供的工具,觉得这个还是有些用途,毕竟,后面的实现思路和原理不是太复杂,就是对json的遍历,然后给予不同节点类型以不同的展现风格. 我这次 ...

  6. (转)InnoDB与MyISAM引擎区别

    MyISAM与InnoDB两者之间区别与选择,详细总结,性能对比 2015年06月25日 21:58:42 阅读数:1827更多 个人分类: mysql   1.MyISAM:默认表类型,它是基于传统 ...

  7. 承接小程序外包 微信小程序外包 H5外包 就找北京动点软件

    承接小程序外包 微信小程序外包 H5外包 就找北京动点软件 长年承接微信小程序.微信公众号开发 全职的H5开发团队,开发过几十款微信小程序公众号案例 欢迎来电咨询 QQ:372900288 微信:li ...

  8. Sublime Text3 离线安装Package Control并使用GBK编码 --转自https://blog.csdn.net/swhard/article/details/78930371

    1.关闭Sublime Text 3,去https://github.com/wbond/package_control/releases下载一个zip包,我下载的是 2.将包内的顶层文件夹解压至C: ...

  9. 工控随笔_02_西门子_WinCC的IO域利用C脚本返回值

    WinCC的输入输出域用来显示信息或者接受操作人员的输入.当作为显示功能时,只有直接的变量连接 才能正常的显示,如果使用动态对话框进行设置且用了表达式则不能正确显示. 但是有时候我们在WinCC变量管 ...

  10. Centos 7 64位 minimal 最小化安装的系统中静默安装oracle 11g r2

    1:安装好centos 7 操作系统: 虚拟机安装centos 7,在vmware中一步步来就可以成功. 2:安装vim 最小化安装的系统只有vi编辑器,这里装一下vim,个人习惯,可以不安装, 那么 ...