springboot连接远程mysql_SpringBoot 通过 SSH 通道连接远程 MySQL 数据库

本文介绍了如何在SpringBoot应用中使用SSH隧道连接远程MySQL数据库。首先,添加了JSch Maven依赖,然后创建了一个SSH连接工具类,包括设置SSH连接参数、建立和断开连接的方法。接着,通过Servlet监听器管理SSH连接的生命周期,在应用启动时初始化连接,关闭时销毁。在`application.properties`中配置数据源时,使用本地端口3307,通过SSH将请求转发到远程数据库。这样实现了安全地从SpringBoot应用访问远程MySQL数据库。
摘要由CSDN通过智能技术生成

1、添加 Maven 依赖

com.jcraft

jsch

0.1.55

2、创建 SSH 连接工具类

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.Session;

public class SshConnection {

//跳板机

String username = "username";

String password = "password";

String host = "host";

int port = 22;

//本地端口

int local_port = 3307;

String remote_host = "192.168.5.56";

int remote_port = 3306;

Session session;

/**

* 建立SSH连接

*/

public void init() {

try {

JSch jsch = new JSch();

session = jsch.getSession(username, host, port);

session.setPassword(password);

session.setConfig("StrictHostKeyChecking", "no");

session.connect();

session.setPortForwardingL(local_port, remote_host, remote_port);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 断开SSH连接

*/

public void destroy() {

this.session.disconnect();

}

}

3、管理 SSH 连接

import org.springframework.stereotype.Component;

import javax.servlet.ServletContextEvent;

import javax.servlet.ServletContextListener;

import javax.servlet.annotation.WebListener;

@WebListener

@Component

public class SshContextListener implements ServletContextListener {

private SshConnection sshConnection;

@Override

public void contextInitialized(ServletContextEvent arg0) {

System.out.println("==========>Context initialized...");

try {

sshConnection = new SshConnection();

sshConnection.init();

} catch (Exception e) {

e.printStackTrace();

}

}

@Override

public void contextDestroyed(ServletContextEvent arg0) {

System.out.println("==========>Context destroyed...");

try {

sshConnection.destroy();

} catch (Exception e) {

e.printStackTrace();

}

}

}

4、配置 application.properties

spring.datasource.url=jdbc:mysql://127.0.0.1:3307/test?characterEncoding=utf8

spring.datasource.username=root

spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

注意:

数据库连接地址由 192.168.5.56:3306 改为 127.0.0.1:3307 ,SSH 连接会把 127.0.0.1:3307 上的操作转发到 192.168.5.56:3306

5、原理

2a1b7b12d8389fed4fe3da6c6c7a39a1.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值