java jdbc使用SSH隧道连接mysql数据库demo
java jdbc使用SSH隧道连接mysql数据库demo
- package com.yws.echo_socket;
- import com.jcraft.jsch.JSch;
- import com.jcraft.jsch.Session;
- import java.sql.*;
- //http://my.oschina.net/Thinkeryjgfn/blog/177283
- //http://www.cnblogs.com/I-will-be-different/p/3925351.html?utm_source=tuicool&utm_medium=referral
- //java jdbc使用SSH隧道连接mysql数据库demo
- public class ChangeDB {
- public static void go() {
- try {
- JSch jsch = new JSch();
- Session session = jsch.getSession("yunshouhu", "192.168.0.102", 22);
- session.setPassword("xxxx");
- session.setConfig("StrictHostKeyChecking", "no");
- session.connect();
- System.out.println(session.getServerVersion());//这里打印SSH服务器版本信息
- //ssh -L 192.168.0.102:5555:192.168.0.101:3306 yunshouhu@192.168.0.102 正向代理
- int assinged_port = session.setPortForwardingL("192.168.0.101",5555, "192.168.0.101", 3306);//端口映射 转发
- System.out.println("localhost:" + assinged_port);
- //ssh -R 192.168.0.102:5555:192.168.0.101:3306 yunshouhu@192.168.0.102
- //session.setPortForwardingR("192.168.0.102",5555, "192.168.0.101", 3306);
- // System.out.println("localhost: -> ");
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- public static void main(String[] args) {
- try {
- //1、加载驱动
- Class.forName("com.mysql.jdbc.Driver");
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- //2、创建连接
- Connection conn = null;
- Connection conn2 = null;
- try {
- conn2 = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "hadoop", "xxxx");
- getData(conn2);
- } catch (SQLException e) {
- System.out.println("未连接上数据库");
- e.printStackTrace();
- }
- try{
- System.out.println("=============");
- go();
- conn = DriverManager.getConnection("jdbc:mysql://192.168.0.101:5555/mysql", "hadoop", "xxx");
- getData(conn);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- private static void getData(Connection conn) throws SQLException {
- // 获取所有表名
- Statement statement = conn.createStatement();
- ResultSet resultSet = statement
- .executeQuery("select * from help_keyword");
- // 获取列名
- ResultSetMetaData metaData = resultSet.getMetaData();
- for (int i = 0; i < metaData.getColumnCount(); i++) {
- // resultSet数据下标从1开始
- String columnName = metaData.getColumnName(i + 1);
- int type = metaData.getColumnType(i + 1);
- if (Types.INTEGER == type) {
- // int
- } else if (Types.VARCHAR == type) {
- // String
- }
- System.out.print(columnName + "\t");
- }
- System.out.println();
- // 获取数据
- while (resultSet.next()) {
- for (int i = 0; i < metaData.getColumnCount(); i++) {
- // resultSet数据下标从1开始
- System.out.print(resultSet.getString(i + 1) + "\t");
- }
- System.out.println();
- }
- statement.close();
- conn.close();
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <parent>
- <artifactId>grpc-demo</artifactId>
- <groupId>org.jiepu</groupId>
- <version>1.0</version>
- </parent>
- <modelVersion>4.0.0</modelVersion>
- <artifactId>echo_socket</artifactId>
- <properties>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <java.version>1.6</java.version>
- </properties>
- <dependencies>
- <dependency>
- <groupId>com.jcraft</groupId>
- <artifactId>jsch</artifactId>
- <version>0.1.53</version>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.36</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>${java.version}</source>
- <target>${java.version}</target>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-shade-plugin</artifactId>
- <executions>
- <execution>
- <phase>package</phase>
- <goals>
- <goal>shade</goal>
- </goals>
- <configuration>
- <transformers>
- <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
- <mainClass>com.yws.echo_socket.ChangeDB</mainClass>
- </transformer>
- </transformers>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </project>
java jdbc使用SSH隧道连接mysql数据库demo的更多相关文章
- Navicat 或者Java的JDBC通过SSH Tunnel连接MySQL数据库
JDBC通过SSH Tunnel连接MySQL数据库 - 明明 - CSDN博客https://blog.csdn.net/a351945755/article/details/21782693 Na ...
- springboot通过ssh通道连接mysql数据库
navicat可以通过ssh通道连接mysql数据库,那java中如何实现了,springboot又该怎样集成呢? 1.添加包 <dependency> <groupId>co ...
- SQLyog通过ssh隧道连接MySQL
1.简介 因为现在很多公司服务的数据库为了安全起见,都不允许直接连接其服务,而只能通过跳板机进行登陆到数据库.而ssh有一项非常有用的功能,即端口转发的隧道功能,让一些不安全的服务,像TCP.POP3 ...
- kettle通过SSH连接Mysql数据库(SSH隧道)
kettle通过SSH连接Mysql数据库(SSH隧道) Kettle无法直接连接使用SSH通道的MySQL,通过SSH隧道(推荐)或者需要借助工具PuTTY(不用时需要注销不推荐),具体操作如下所示 ...
- JAVA-数据库之JDBC连接MySQL数据库
相关资料:<21天学通Java Web开发> JDBC连接MySQL数据库1.如果需要通过JDBC来连接MySQL数据库,还必须先在MySQL数据库服务器中创建数据库和表. Connect ...
- jmeter连接Mysql数据库测试性能初探
Jmeter mysql性能测试演示 1. Jmeter是java开发的,jmeter连接mysql数据库当然需要jdbc驱动,这个可以在网上下载mysql-connector-java包,然后解压 ...
- java 通过jdbc连接MySQL数据库
先了解下JDBC的常用接口 1.驱动程序接口Driver 每种数据库的驱动程序都应该提供一个实现java.sql.Driver接口的类,简称Driver类.通常情况下,通过java.lang.Clas ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- Java使用JDBC连接MySQL数据库
1.引用 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...
随机推荐
- 第八次 Java 作业 重写正方形周长方法
# 题目 编写一个应用程序,创建一个矩形类,类中具有长.宽两个成员变量和求周长的方法. 再创建一个矩形类的子类——正方形类,类中定义求面积方法.重写求周长的方法. 在主类中,输入一个正方形边长,创建正 ...
- 华三NAT总结
1.保证网络之间的连通性,可以用动态路由协议使网络连通. 2.配置一条默认路由到外网. ip route-static 0.0.0.0 0 210.33.44.2 3.进入连接外网的端口,把这个端口设 ...
- /bin/bash^M: bad interpreter
(1)使用linux命令dos2unix filename,直接把文件转换为unix格式: (2)使用sed命令sed -i "s/\r//" filename 或者 sed -i ...
- mknod
- P3350 [ZJOI2016]旅行者
题目描述 小Y来到了一个新的城市旅行.她发现了这个城市的布局是网格状的,也就是有n条从东到西的道路和m条从南到北的道路,这些道路两两相交形成n*m个路口 (i,j)(1<=i<=n,1&l ...
- hbase基础知识一
1. hbase是什么 漫画学习hbase----最易懂的Hbase架构原理解析 http://developer.51cto.com/art/201904/595698.htm 1.1 hbase的 ...
- dajngo控制台添加数据报错Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured.
报错: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but set ...
- LSTM代码
tensorflow的关于LSTM的代码,经过反复的调试和修改,终于运行成功了,可以把训练过程的结果保存起来,然后预测的时候直接取出来.花了很长时间才把官网上的代码调试成功,里面的坑有很多需要填补,还 ...
- allure 2
项目地址 https://github.com/allure-framework/allure2/releases 安装文档 https://docs.qameta.io/allure/#_insta ...
- hdu2094产生冠军[STL set]
目录 题目地址 题干 代码和解释 参考 题目地址 hdu2094 题干 代码和解释 题意可以这样理解:一个人只要没输过就可以是冠军,如果没输过的人恰为一位,那就认他为冠军,若少于或多于一位,则判定没有 ...