Как подключиться к базе данных MySQL через туннель s sh в Java? - PullRequest
0 голосов
/ 24 апреля 2020

Как я могу подключиться к удаленной базе данных MySQL через S SH из приложения java? ///////////////////////////

Не могу подключиться к БД. Я правильно заполнил данные? Чего-то не хватает? (Вы можете видеть мои детали в приложенном изображении) Заранее спасибо

////////////////////////////

 package jkljl;

    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 Test {

        public static void main(String[] args) throws SQLException {

            int lport = 5656;
            String rhost = "152.16.10.143";
            String host = "connect.msdbs.com";
            int rport = 3306;
            String user = "jojo111";
            String password = ""; //Dont got ssh pass
            String dbuserName = "jojo111";
            String dbpassword = "AB1234";
            String url = "jdbc:mysql://localhost:" + lport + "/br_vo";
            String driverName = "com.mysql.jdbc.Driver";
            String SshKeyFilepath = "C:\\Users\\jojo111\\Desktop\\jojo111";
            Connection conn = null;
            Session session = null;
            try {

                java.util.Properties config = new java.util.Properties();
                config.put("StrictHostKeyChecking", "no");
                JSch jsch = new JSch();
                jsch.addIdentity(SshKeyFilepath);
                session = jsch.getSession(user, host, 22);
            //  session.setPassword(password);
                session.setConfig(config);
                session.connect();
                System.out.println("Connected");

                // Port Forwarding
                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();
                }
            }
        }

    }

Подробности

1 Ответ

0 голосов
/ 24 апреля 2020

Пожалуйста, обратитесь к приведенному ниже коду и замените значения host / username / password соответственно:

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 Test {


    public static void main(String[] args) throws SQLException {

        int lport=5656;
        String rhost="secure.example.com";
        String host="secure.example.com";
        int rport=3306;
        String user="sshuser";
        String password="sshpassword";
        String dbuserName = "mysql";
        String dbpassword = "mysqlpassword";
        String url = "jdbc:mysql://localhost:"+lport+"/mydb";
        String driverName="com.mysql.jdbc.Driver";
        Connection conn = null;
        Session session= null;
        try{

            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");

            //Port Forwarding
            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();
            }
        }
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...