java jdbc使用SSH隧道连接mysql数据库demo

 
  1.  
    package com.yws.echo_socket;
  2.  
     
  3.  
     
  4.  
    import com.jcraft.jsch.JSch;
  5.  
    import com.jcraft.jsch.Session;
  6.  
     
  7.  
    import java.sql.*;
  8.  
     
  9.  
    //http://my.oschina.net/Thinkeryjgfn/blog/177283
  10.  
    //http://www.cnblogs.com/I-will-be-different/p/3925351.html?utm_source=tuicool&utm_medium=referral
  11.  
    //java jdbc使用SSH隧道连接mysql数据库demo
  12.  
    public class ChangeDB {
  13.  
     
  14.  
     
  15.  
     
  16.  
    public static void go() {
  17.  
    try {
  18.  
    JSch jsch = new JSch();
  19.  
    Session session = jsch.getSession("yunshouhu", "192.168.0.102", 22);
  20.  
    session.setPassword("xxxx");
  21.  
    session.setConfig("StrictHostKeyChecking", "no");
  22.  
    session.connect();
  23.  
    System.out.println(session.getServerVersion());//这里打印SSH服务器版本信息
  24.  
     
  25.  
    //ssh -L 192.168.0.102:5555:192.168.0.101:3306 yunshouhu@192.168.0.102 正向代理
  26.  
    int assinged_port = session.setPortForwardingL("192.168.0.101",5555, "192.168.0.101", 3306);//端口映射 转发
  27.  
     
  28.  
    System.out.println("localhost:" + assinged_port);
  29.  
     
  30.  
    //ssh -R 192.168.0.102:5555:192.168.0.101:3306 yunshouhu@192.168.0.102
  31.  
    //session.setPortForwardingR("192.168.0.102",5555, "192.168.0.101", 3306);
  32.  
    // System.out.println("localhost: -> ");
  33.  
    } catch (Exception e) {
  34.  
    e.printStackTrace();
  35.  
    }
  36.  
    }
  37.  
     
  38.  
     
  39.  
     
  40.  
    public static void main(String[] args) {
  41.  
     
  42.  
     
  43.  
    try {
  44.  
    //1、加载驱动
  45.  
    Class.forName("com.mysql.jdbc.Driver");
  46.  
    } catch (ClassNotFoundException e) {
  47.  
    e.printStackTrace();
  48.  
    }
  49.  
    //2、创建连接
  50.  
    Connection conn = null;
  51.  
    Connection conn2 = null;
  52.  
    try {
  53.  
     
  54.  
    conn2 = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "hadoop", "xxxx");
  55.  
    getData(conn2);
  56.  
    } catch (SQLException e) {
  57.  
    System.out.println("未连接上数据库");
  58.  
    e.printStackTrace();
  59.  
    }
  60.  
     
  61.  
    try{
  62.  
    System.out.println("=============");
  63.  
    go();
  64.  
    conn = DriverManager.getConnection("jdbc:mysql://192.168.0.101:5555/mysql", "hadoop", "xxx");
  65.  
    getData(conn);
  66.  
     
  67.  
     
  68.  
    } catch (SQLException e) {
  69.  
    e.printStackTrace();
  70.  
    }
  71.  
     
  72.  
     
  73.  
     
  74.  
    }
  75.  
     
  76.  
    private static void getData(Connection conn) throws SQLException {
  77.  
     
  78.  
    // 获取所有表名
  79.  
    Statement statement = conn.createStatement();
  80.  
    ResultSet resultSet = statement
  81.  
    .executeQuery("select * from help_keyword");
  82.  
    // 获取列名
  83.  
    ResultSetMetaData metaData = resultSet.getMetaData();
  84.  
    for (int i = 0; i < metaData.getColumnCount(); i++) {
  85.  
    // resultSet数据下标从1开始
  86.  
    String columnName = metaData.getColumnName(i + 1);
  87.  
    int type = metaData.getColumnType(i + 1);
  88.  
    if (Types.INTEGER == type) {
  89.  
    // int
  90.  
    } else if (Types.VARCHAR == type) {
  91.  
    // String
  92.  
    }
  93.  
    System.out.print(columnName + "\t");
  94.  
    }
  95.  
    System.out.println();
  96.  
    // 获取数据
  97.  
    while (resultSet.next()) {
  98.  
    for (int i = 0; i < metaData.getColumnCount(); i++) {
  99.  
    // resultSet数据下标从1开始
  100.  
    System.out.print(resultSet.getString(i + 1) + "\t");
  101.  
    }
  102.  
    System.out.println();
  103.  
     
  104.  
    }
  105.  
    statement.close();
  106.  
    conn.close();
  107.  
    }
  108.  
     
  109.  
    }

  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <project xmlns="http://maven.apache.org/POM/4.0.0"
  3.  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.  
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5.  
    <parent>
  6.  
    <artifactId>grpc-demo</artifactId>
  7.  
    <groupId>org.jiepu</groupId>
  8.  
    <version>1.0</version>
  9.  
    </parent>
  10.  
    <modelVersion>4.0.0</modelVersion>
  11.  
     
  12.  
    <artifactId>echo_socket</artifactId>
  13.  
     
  14.  
    <properties>
  15.  
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  16.  
    <java.version>1.6</java.version>
  17.  
    </properties>
  18.  
     
  19.  
    <dependencies>
  20.  
     
  21.  
    <dependency>
  22.  
    <groupId>com.jcraft</groupId>
  23.  
    <artifactId>jsch</artifactId>
  24.  
    <version>0.1.53</version>
  25.  
    </dependency>
  26.  
    <dependency>
  27.  
    <groupId>mysql</groupId>
  28.  
    <artifactId>mysql-connector-java</artifactId>
  29.  
    <version>5.1.36</version>
  30.  
    </dependency>
  31.  
    </dependencies>
  32.  
    <build>
  33.  
    <plugins>
  34.  
    <plugin>
  35.  
    <groupId>org.apache.maven.plugins</groupId>
  36.  
    <artifactId>maven-compiler-plugin</artifactId>
  37.  
    <configuration>
  38.  
    <source>${java.version}</source>
  39.  
    <target>${java.version}</target>
  40.  
    </configuration>
  41.  
    </plugin>
  42.  
     
  43.  
    <plugin>
  44.  
    <groupId>org.apache.maven.plugins</groupId>
  45.  
    <artifactId>maven-shade-plugin</artifactId>
  46.  
    <executions>
  47.  
    <execution>
  48.  
    <phase>package</phase>
  49.  
    <goals>
  50.  
    <goal>shade</goal>
  51.  
    </goals>
  52.  
    <configuration>
  53.  
    <transformers>
  54.  
    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
  55.  
    <mainClass>com.yws.echo_socket.ChangeDB</mainClass>
  56.  
    </transformer>
  57.  
    </transformers>
  58.  
    </configuration>
  59.  
    </execution>
  60.  
    </executions>
  61.  
    </plugin>
  62.  
    </plugins>
  63.  
    </build>
  64.  
    </project>

java jdbc使用SSH隧道连接mysql数据库demo的更多相关文章

  1. Navicat 或者Java的JDBC通过SSH Tunnel连接MySQL数据库

    JDBC通过SSH Tunnel连接MySQL数据库 - 明明 - CSDN博客https://blog.csdn.net/a351945755/article/details/21782693 Na ...

  2. springboot通过ssh通道连接mysql数据库

    navicat可以通过ssh通道连接mysql数据库,那java中如何实现了,springboot又该怎样集成呢? 1.添加包 <dependency> <groupId>co ...

  3. SQLyog通过ssh隧道连接MySQL

    1.简介 因为现在很多公司服务的数据库为了安全起见,都不允许直接连接其服务,而只能通过跳板机进行登陆到数据库.而ssh有一项非常有用的功能,即端口转发的隧道功能,让一些不安全的服务,像TCP.POP3 ...

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

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

  5. JAVA-数据库之JDBC连接MySQL数据库

    相关资料:<21天学通Java Web开发> JDBC连接MySQL数据库1.如果需要通过JDBC来连接MySQL数据库,还必须先在MySQL数据库服务器中创建数据库和表. Connect ...

  6. jmeter连接Mysql数据库测试性能初探

    Jmeter mysql性能测试演示 1.  Jmeter是java开发的,jmeter连接mysql数据库当然需要jdbc驱动,这个可以在网上下载mysql-connector-java包,然后解压 ...

  7. java 通过jdbc连接MySQL数据库

    先了解下JDBC的常用接口 1.驱动程序接口Driver 每种数据库的驱动程序都应该提供一个实现java.sql.Driver接口的类,简称Driver类.通常情况下,通过java.lang.Clas ...

  8. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  9. Java使用JDBC连接MySQL数据库

    1.引用 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...

随机推荐

  1. 201671030106 何启芝 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 >>2016级计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 >>实验十四 团队项目评审&课程学习总结 课程学习目 ...

  2. React于React native的渲染机制

    面向virtual DOM编程 vs 面向native componet编程: 状态编程引起的UI变化会全部提交到native compnent然后走平台原来的渲染流程. The DOM is jus ...

  3. cc2530中单片机的通用I/O接口

    cc2530中有21个输入/输出引脚. 这些引脚可以设置为通用I/O或者设置为外设I/O.(其实这里的外设还是不太懂到底指什么,网上说输入设备,但是通用I/O也可以输入啊,为什么要弄外设I/O?) 其 ...

  4. P3327 [SDOI2015]约数个数和 莫比乌斯反演

    P3327 [SDOI2015]约数个数和 莫比乌斯反演 链接 luogu 思路 第一个式子我也不会,luogu有个证明,自己感悟吧. \[d(ij)=\sum\limits_{x|i}\sum\li ...

  5. Pymysql+Pandas+Sqlalchemy数据库更新脚本编写

    #导入需要的包,使用pymysql操作数据库 #pandas包很强大,可以直接读取数据表,创建dataframe数据结构,同时可以直接将dataframe导出到数据库 #sqlalchemy创建引擎, ...

  6. 使用 Python 和 Flask 设计 RESTful API

    近些年来 REST (REpresentational State Transfer) 已经变成了 web services 和 web APIs 的标配. 在本文中我将向你展示如何简单地使用 Pyt ...

  7. JPA的懒加载

    JPA数据懒加载LAZY和实时加载EAGER(二)   懒加载LAZY和实时加载EAGER的概念,在各种开发语言中都有广泛应用.其目的是实现关联数据的选择性加载,懒加载是在属性被引用时,才生成查询语句 ...

  8. Vue日常开发问题

    1.sh: webpack-dev-server: command not found 我的公众号:

  9. CatBoost使用GPU实现决策树的快速梯度提升CatBoost Enables Fast Gradient Boosting on Decision Trees Using GPUs

    python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...

  10. 目前流行前端几大UI框架排行榜

    在前端项目开发过程中,总是会引入一些UI框架,已为方便自己的使用,很多大公司都有自己的一套UI框架,下面就是最近经常使用并且很流行的UI框架. 一.Mint UI 流行指数:★★★★ Mint UI是 ...