微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Java程序:使用JSch和JDBC通过SSH连接到MySQL

在项目中,如果要连接到在启用SSH的服务器上设置的远程数据库。 由于它是在支持SSH的服务器上,我们无法使用JDBC连接API直接连接它。 为此,首先需要创建SSH会话,然后使用端口转发,将请求转发到服务器并连接到数据库。使用JSch端口转发实现了这一点,然后连接到数据库

这是端口转发和连接到远程数据库而编写的程序。


package com.jb51.cc.java.ssh

import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.sqlException;

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.sql.Connection;


public class MysqLConnOveRSSH {

    /**
     * Java Program to connect to remote database through SSH using port forwarding
     * @author admin@jb51.cc.com
     * @throws sqlException 
     */
    public static void main(String[] args) throws sqlException {

        int lport=5656;
        String rhost=secure.xxxxx.com;
        String host=secure.xxxxx.com;
        int rport=3306;
        String user=sshuser;
        String password=sshpassword;
        String dbuserName = MysqL;
        String dbpassword = MysqL123;
        String url = jdbc:MysqL://localhost:+lport+/mydb;
        String driverName=com.MysqL.jdbc.Driver;
        Connection conn = null;
        Session session= null;
        try{
            //Set StrictHostKeyChecking property to no to avoid UnkNownHostKey issue
            java.util.Properties config = new java.util.Properties(); 
            config.put(StrictHostKeyChecking, no);
            JSch jsch = new JSch();
            session=jsch.getSession(user, host, 22);
            session.setPassword(password);
            session.setConfig(config);
            session.connect();
            System.out.println(Connected);
            int assinged_port=session.setPortForwardingL(lport, rhost, rport);
            System.out.println(localhost:+assinged_port+ -> +rhost+:+rport);
            System.out.println(Port Forwarded);

            //MysqL database connectivity
            Class.forName(driverName).newInstance();
            conn = DriverManager.getConnection (url, dbuserName, dbpassword);
            System.out.println (Database connection established);
            System.out.println(DONE);
        }catch(Exception e){
            e.printstacktrace();
        }finally{
            if(conn != null && !conn.isClosed()){
                System.out.println(Closing Database Connection);
                conn.close();
            }
            if(session !=null && session.isConnected()){
                System.out.println(Closing SSH Connection);
                session.disconnect();
            }
        }
    }

}

上述程序的输出是:


Connected
localhost:5656 -> secure.journaldev.com:3306
Port Forwarded
Database connection established
DONE
Closing Database Connection
Closing SSH Connection

在这里,连接到MysqL数据库,但可以使用此方法连接到任何其他数据库或企业信息系统。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐