Jdbc使用SSH连接mysql
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的更多相关文章
- kettle通过SSH连接Mysql数据库(SSH隧道)
kettle通过SSH连接Mysql数据库(SSH隧道) Kettle无法直接连接使用SSH通道的MySQL,通过SSH隧道(推荐)或者需要借助工具PuTTY(不用时需要注销不推荐),具体操作如下所示 ...
- 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类
一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ...
- JDBC测试计划-连接mysql
一.测试环境准备 mysql:5.5 JDBC驱动:mysql-connector-java-5.1.30.jar 文件复制到JMeter/lib目录下 JMeter:jmeter-3.2 ...
- mysql——jdbc驱动下载&连接mysql例子
mysql-connector-java-5.1.46.zip[解压后里面jar文件就是所需要的] https://dev.mysql.com/get/Downloads/Connector-J/my ...
- jdbc知识点(连接mysql)
jdbc连接mysql 1.JDBC简介 JDBC: 指 Java 数据库连接,是一种标准Java应用编程接口( JAVA API),用来连接 Java 编程语言和广泛的数据库.从根本上来说,JDBC ...
- sqlyog通过跳板机ssh连接mysql数据库
方法一: 方法二: 在跳板机上启动sh脚本做ssh端口转发,客户端配置连接 10.0.0.1的8306端口即可 jdbc:mysql://10.0.0.1:8306/testdb?useUnicode ...
- JDBC入门之一--连接Mysql实验
工具:mysql-connector-java-5.1.40.eclipse 1)首先要将mysql-connector-java包整合到eclipse中,右击项目,然后选择build path,出现 ...
- C#通过SSH连接MySql
出于安全考虑,有的时候数据库服务器只能通过SSH访问,比如MySql服务装在了服务器A上,并且A机器只允许B机器才能访问,而部署环境可能在C机器上,这时候就要C服务器通过B服务器连接A服务器,这时候就 ...
- jdbc java远程连接mysql数据库服务器
首先,需要注意以下几点: 1.手机需要获得可以访问网络的权限: 2.导入的jdbc驱动的版本需要与mysql服务器的版本相近: 3.mysql默认的访客是只允许本机(localhost),不允许其他主 ...
随机推荐
- Android项目——触摸按键控制LED
一.Android Studio应用编程 1.应用程序界面layout对应的界面是activity_main.xml,后台对应的java文件是MainActivity.java,修改activity_ ...
- CentOS 7编译安装php7.0.7以及可能遇到的问题的解决方案
https://blog.csdn.net/chenxiabinffff/article/details/51612149
- 压力测试:系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
PS:下面是性能测试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高, ...
- 利用chrome浏览器爬取数据
相关的库自己下载吧,直接上代码 from selenium import webdriver from bs4 import BeautifulSoup import time #手动添加路径 pat ...
- 多线程shell脚本检测主机存活
局域网中分了很多网段,而IP地址使用情况也未知,前期也没有规划和记录,当新的主机需要使用固定IP的时候,能否第一时间知道哪个IP空闲就显得很重要了,如果一个一个去ping的话太浪费时间. 这里分享一个 ...
- BootStrap小知识随笔
1.让label和input在一行显示 添加class "form-inline"就可以了.如 <table class="table table-bordered ...
- Mha-Atlas-MySQL高可用
Mha-Atlas-MySQL高可用 一.MHA简介 1.软件介绍 MHA在MySQL高可用是一个相对成熟的解决方案,是一套优秀的作为mysql高可用环境下故障切换和主从提升的高可用软件,在MySQL ...
- declaration may not appear after executable statement in block
keil 编译时出现 declaration may not appear after executable statement in block,找到keil工程对应的函数 定义的地方出现在了赋值的 ...
- go中单链表
package main import ( "fmt" ) type ListNode struct { Val int Next *ListNode } type List st ...
- 隐马尔可夫模型(HMM) 学习笔记
在中文标注时,除了条件随机场(crf),被提到次数挺多的还有隐马尔可夫(HMM),通过对<统计学习方法>一书的学习,我对HMM的理解进一步加深了. 第一部分 介绍隐马尔可夫 隐马尔可夫模型 ...