java jdbc使用SSH隧道连接mysql数据库demo - 云守护的专栏 - CSDN博客
创建时间:
2017/8/28 10:05
来源:
http://blog.csdn.net/earbao/article/details/50216999
java jdbc使用SSH隧道连接mysql数据库demo
.
2015-12-08 12:16
6943人阅读
评论
(5)
收藏
举报
.
分类:
java
(291)
.
版权声明:本文为博主原创文章,未经博主允许不得转载。
[java]
view plain
copy
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();
}
}
[html]
view plain
copy
<?
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
>
.
顶
2
踩
0
.
上一篇
java socket多线程通讯demo
下一篇
java 嵌入式的Web服务器jetty使用例子
.
相关文章推荐
•
jdbc连接mysql数据库 增删改查demo
•
【直播】70天软考冲刺计划--任铄
•
java连接mysql数据库(JDBC驱动
•
【直播】打通Linux脉络 进程、线程、调度--宋宝华
•
高负载高并发网站架构分析
•
【直播】机器学习之凸优化--马博士
•
mysql-connector-java-5.1.39 JDBC连接mysql数据库驱动
•
【套餐】MATLAB基础+MATLAB数据分析与统计--魏伟
•
Android直接使用JDBC+SSH连接外网MySQL数据库
•
【课程】3小时掌握Docker最佳实战--徐西宁
•
mysql数据库JDBC连接
•
【课程】深度学习基础与TensorFlow实践--AI100
•
computer专业术语总结
•
jdbc操作Mysql数据库demo
•
java jdbc使用SSH隧道连接mysql数据库demo
•
java jdbc测试mysql数据库
查看评论
3楼
qzxforever
2016-12-14 22:46发表
[回复]
请问博主玩过以下这种情况么?
需要跳两次的linux
ssh remoteserver1
user=user
ssh user@remoteserver2
user=root
remoteserver2 才能访问到数据库
如果知道请指导以下
2楼
yy8616270
2016-11-24 17:23发表
[回复]
虽然没看懂,但是用上了,挺牛逼的一个工具!
session.setPortForwardingL("192.168.0.101",5555, "192.168.0.101", 3306)
的意思是把本地的5555端口映射到101的3306吗?主要是没明白前面第一个参数(host)和第二个参数(port)
1楼
shi_zilin2013
2016-06-16 13:32发表
[回复]
您好,请问为什么本地还要有一个数据库啊?conn2 = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "hadoop", "xxxx"); 本来就是直接连接远程数据库查询数据啊,还有
int assinged_port = session.setPortForwardingL("192.168.0.101",5555, "192.168.0.101", 3306);这条语句没搞明白,看了API也没弄懂,能详细讲解一下吗?
您还没有登录,请
[登录]
或
[注册]
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场