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

、添加 Maven 依赖

 
  1. <dependency>
  2. <groupId>com.jcraft</groupId>
  3. <artifactId>jsch</artifactId>
  4. <version>0.1.55</version>
  5. </dependency>

2、创建 SSH 连接工具类

 
  1. import com.jcraft.jsch.JSch;
  2. import com.jcraft.jsch.Session;
  3. public class SshConnection {
  4. //跳板机
  5. String username = "username";
  6. String password = "password";
  7. String host = "host";
  8. int port = 22;
  9. //本地端口
  10. int local_port = 3307;
  11. String remote_host = "192.168.5.56";
  12. int remote_port = 3306;
  13. Session session;
  14. /**
  15. * 建立SSH连接
  16. */
  17. public void init() {
  18. try {
  19. JSch jsch = new JSch();
  20. session = jsch.getSession(username, host, port);
  21. session.setPassword(password);
  22. session.setConfig("StrictHostKeyChecking", "no");
  23. session.connect();
  24. session.setPortForwardingL(local_port, remote_host, remote_port);
  25. } catch (Exception e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. /**
  30. * 断开SSH连接
  31. */
  32. public void destroy() {
  33. this.session.disconnect();
  34. }
  35. }

3、管理 SSH 连接

 
  1. import org.springframework.stereotype.Component;
  2. import javax.servlet.ServletContextEvent;
  3. import javax.servlet.ServletContextListener;
  4. import javax.servlet.annotation.WebListener;
  5. @WebListener
  6. @Component
  7. public class SshContextListener implements ServletContextListener {
  8. private SshConnection sshConnection;
  9. @Override
  10. public void contextInitialized(ServletContextEvent arg0) {
  11. System.out.println("==========>Context initialized...");
  12. try {
  13. sshConnection = new SshConnection();
  14. sshConnection.init();
  15. } catch (Exception e) {
  16. e.printStackTrace();
  17. }
  18. }
  19. @Override
  20. public void contextDestroyed(ServletContextEvent arg0) {
  21. System.out.println("==========>Context destroyed...");
  22. try {
  23. sshConnection.destroy();
  24. } catch (Exception e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }

4、配置 application.properties

 
  1. spring.datasource.url=jdbc:mysql://127.0.0.1:3307/test?characterEncoding=utf8
  2. spring.datasource.username=root
  3. spring.datasource.password=root
  4. 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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值