通过 ssh tunnel 连接 远程mysql数据库
来源:互联网 发布:达芬奇 调色软件 编辑:程序博客网 时间:2024/04/28 12:04
场景:远程MySQL 数据库 因为种种原因,本地不能直接连接到该数据库。但是,数据库服务器A与本地机器B间的另外一台机器C可以连上。这样的话,我们可以在C上设置SSH tunnel 来访问MySQL数据库。
通过navicat等工具连接MySQL的方法在网上有很多资料这里不再赘述。这里要说的是 ——如何实现将数据库服务器A上的3306端口绑定到本地B,然后来访问本地B端口,就像访问数据库服务器A上3306端口一样。
依赖包:jsch-0.1.53.jar (作用:将A机器上的3306端口绑定到本地)
import com.jcraft.jsch.JSch;import com.jcraft.jsch.JSchException;import com.jcraft.jsch.Session;public class testSSHTunnel {public static void main(String[] args) { Connection conn = null; Statement statement = null; ResultSet resultSet = null; /////////// String sshUser = ""; //机器C上SSH tunnel username String sshPass = ""; //机器C上SSH tunnel password int sshPort = 22; //机器C上SSH tunnel port String sshHost = ""; //机器C的外网IP //创建SSH回话 Session session = new JSch().getSession(sshUser, sshHost, sshPort); session.setPassword(sshPass); session.setConfig("StrictHostKeyChecking", "no"); session.connect(); //将数据库服务器A上的端口绑定到本地B int localPort = 3306; String remoteHost = ""; //数据库服务器A的内网IP int remotePort = 3306; try { boolean flag = session.setPortForwardingL(localPort, remoteHost, remotePort); if (!flag) { System.out.println("SSHUtil 绑定端口失败"); return; } } catch (JSchException e) { System.out.println("SSHUtil 绑定端口异常 ==>" + e.getMessage()); } //以上已经将数据库端口绑定到本机3306端口 //连接本地3306端口 try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/DB_INSTANCE", "DB_USERNAME", "DB_PASSWD"); statement = conn.createStatement(); String sql = "select xxx from xxx where xxx"; resultSet = statement.executeQuery(sql); while (resultSet.next()) System.out.println(resultSet.getString(1)); } catch (Exception e) { e.printStackTrace(); } finally { try { resultSet.close(); statement.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } sshSession.disconnect(); } }}
0 0
- 通过 ssh tunnel 连接 远程mysql数据库
- JDBC通过SSH Tunnel连接MySQL数据库
- JDBC通过SSH Tunnel连接MySQL数据库
- Navicat for Mysql,SSH连接远程数据库
- mysql 通过ssh通道安全连接数据库
- 通过SSH Tunnel远程操作防火墙内的主机
- 通过SSH连接远程主机
- Navicat for MySQL通过ssh桥接连接远程数据库
- Navicat for MySQL用ssh功能连接远程数据库
- 如何配置HeidiSql SSH Tunnel访问远端Mysql数据库
- sqlyog通过跳板机ssh连接mysql数据库
- Java程序通过JDBC连接远程数据库MySQL
- 远程连接mysql数据库
- 远程连接MySQL数据库
- 远程连接MySQL数据库
- mysql远程连接数据库
- MySQL连接远程数据库
- 远程连接MYSQL数据库
- IOS开发初体验
- Http请求中的Content-Type
- 浅谈Active Object模式
- 多屏幕适配
- 学习 Java UDP 小结
- 通过 ssh tunnel 连接 远程mysql数据库
- 查询的基本结构
- 自定义UICollectionViewFlowLayout
- [LeetCode] Regular Expression Matching
- java 类动态加载 / static 语句块加载一次
- this class is not key value coding-compliant for the key xxxxx.
- hdu 1542 线段树求矩形并+离散化
- IPC-管道
- Kafka设计解析(五)- Kafka性能测试方法及Benchmark报告