SSH连接mysql代码实现

最近用到了通过SSH连接数据库,记录一下实现过程

代码实现 :

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.sql.*;
import java.util.*;

public class InsertDatebase{
private static int localPort = 3308; //本地转发端口
private static String remoteHost = "xxx.xxx.xx.xx";//远程MYSQL服务器
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final boolean needSSH = true; //是否需要SSH转发

//数据库配置
private static final String DB_URL = "jdbc:mysql://localhost:" + localPort + "/xxx";
    private static final String USER = "xxx";
    private static final String PASS = "xxx";

    private static Session session;
    private Connection conn = null;
    private static Statement stmt = null;
    private ResultSet rs = null;

//数据库连接
public void getConnection(){
try{
   if(needSSH){ //开启SSH
       if(session == null || !session.isConnected()){
          startSSH();
       }
    }
    // 注册 JDBC 驱动
            Class.forName(JDBC_DRIVER);
            // 打开链接
            if (conn == null || conn.isClosed()){
                conn = DriverManager.getConnection(DB_URL, USER, PASS);
            }
            if (stmt == null || stmt.isClosed()){
                stmt = conn.createStatement();//或者用PreparedStatement方法
            }
}catch(Exception e){
   e.printStackTrace();
}
}

//SSH 本地转发
private void startSSH() {
//SSH连接用户名
String sshUser = "xxx";
//SSH连接密码
String sshPassword = "xxx";
//SSH服务器
String sshHost = "xx.xx.xx.xx";
//SSH访问端口
int sshPort = xx;
JSch jsch = new JSch();
        if (session == null || !session.isConnected()){
            session = jsch.getSession(sshUser, sshHost, sshPort);
        }
        session.setPassword(sshPassword);
        // 设置第一次登陆的时候提示,可选值:(ask | yes | no)
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect();
        // 打印SSH服务器版本信息
        System.out.println(session.getServerVersion());
        // 设置SSH本地端口转发,本地转发到远程
        int assinged_port = session.setPortForwardingL(localPort, remoteHost, remotePort);

}

public static void main(String[] args) throws Exception
    {
    //具体调用。。。。
    String sqlQuery = "select * from xxx ";
    stmt.executeQuery(sqlQuery);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值