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. JavaScript自定义事件 - createEvent()、initEvent()和dispachEvent()

    在学习目标事件的方法的时候,接触到了dispatchEvent()方法.度娘查一查,这是一个事件触发器,事件触发器其实就是触发事件的东西. 通常情况下,我们触发事件都是在交互中触发的事件,例如点击按钮 ...

  2. linux系统如何发送邮件

    安装应用yum install mailx  sendmail -y接着修改/etc/mail.rc文件,添加一下参数#末尾添加 zabbix 发送告警信息邮箱(按照自己的情况修改)set from= ...

  3. 创建一个dynamics 365 CRM online plugin (五) - Images in Plugin

    Snapshots of the primary entity's attributes from database before(pre) and after (post) the core pla ...

  4. 脚本添加crontab任务

    #!/bin/bash export LANG=en_US.utf8 cur_dir=$(cd ``;pwd) job_cmd_info="\n# 每天凌晨5点运行定时删除工具\n" ...

  5. chrome浏览器onunload方法无法执行window.location.href

    记录用户不正常退出,如关闭浏览器的时候,执行onunload方法,跳回后台记录用户已经退出的信息,在ie上可以正常跳转,但在Firefox和chrome上却无法跳转. 测试后发现以下方法可以实现,支持 ...

  6. Mxd文档更新比例尺

    在AE中,更新Mxd文档的比例尺,比较特殊.写代码以记录,更新比例尺代码如图所示: [DllImport("User32.dll")] public static extern i ...

  7. 纵观 jBPM:从 jBPM3 到 jBPM5 以及 Activiti5

    https://www.infoq.cn/article/rh-jbpm5-activiti5# 对jBPM来说,今年最大的事件莫过于 jBPM 的创建者Tom Baeyens离开 JBoss 了.T ...

  8. Oracle数据库容量使用情况调查

    -- 剩余容量 select sum(bytes) FREE from DBA_FREE_SPACE where tablespace_name ='xxx'; -- 总容量 select sum(b ...

  9. WEB 性能优化导图

    看了一下网上对于web性能优化的一些帖子,不是很直观,花了点时间画了一个思维导图. refers: https://segmentfault.com/a/1190000011936772 https: ...

  10. Laya for H5 之Bug追踪

    Laya For H5之Bug追踪 H5游戏一旦上线后,如何跟踪用户的崩溃日志呢?现在有很多第三方的工具,比如fundebug,其sdk接入简单,只需寥寥几行代码就可以追踪h5游戏的崩溃日志,bug日 ...