JDBC通过SSH远程连接Mysql数据库

@Test
    public void SShMysqltest() throws Exception {
        try {
            String Sshuser ="Sshuser "
            String SShPassword = "password"
            String SSHip =101.37.xxx.xxx
            int SShPort = 2244
            JSch jsch = new JSch();
            Session session = jsch.getSession(Sshuser,SSHip,SShPort );
            session.setPassword(SShPassword );
            /*
            *默认情况下,StrictHostKeyChecking=ask。简单所下它的三种配置值:                                          
            *1.StrictHostKeyChecking=no #最不安全的级别,当然也没有那么多烦人的提示了,相对安 
            *全的内网测试时*建议使用。如果连接server的key在本地不存在,那么就自动添加到文件中 
            *(默认是known_hosts),并且给*出一个警告。 
            *2.StrictHostKeyChecking=ask #默认的级别,就是出现刚才的提示了。如果连接和key不匹 
            *配,给出提示,并拒绝登录。                                                                                                                            
            *3.StrictHostKeyChecking=yes #最安全的级别,如果连接与key不匹配,就拒绝连接,不会 
            *提示详细信
            *息。    
            */
                                        
            session.setConfig("StrictHostKeyChecking", "no");
            session.connect();//连接

            System.out.println(session.getServerVersion());//这里打印SSH服务器版本信息

            //  正向代理
            int assinged_port = session.setPortForwardingL(本地可用的端口, "远程数据库IP或域名", 远程数据库端口);//端口映射 转发

            System.out.println("localhost:" + assinged_port);

            //ssh -R 192.168.0.102:5555:192.168.0.101:3306 [email protected]
            //session.setPortForwardingR("192.168.0.102",5555, "192.168.0.101", 3306);
            // System.out.println("localhost:  -> ");
        } catch (Exception e) {
            e.printStackTrace();
        }






        String driverClass =null;
        String url = null;
        String user = null;
        String password = null;
        //第一步:准备连接数据库的4个参数:驱动名、jdbcUrl,user,password
        //1.读取配置盘文件
        Properties properties = new Properties();
        FileInputStream fileInputStream = new FileInputStream(new File("jdbc.properties"));
        properties.load(fileInputStream);
        fileInputStream.close();
        //2.从配置文件中获取读取的参数值
        driverClass = properties.getProperty("driverclass");
        url = properties.getProperty("url");
        user = properties.getProperty("user");
        password = properties.getProperty("password");
        //第二步:加载驱动
        Class.forName(driverClass);
        //第三步:通过DriverManager的getconnection方法获取数据连接
        Connection connection = DriverManager.getConnection(url,user,password);
        Statement st = connection.createStatement();
        st.executeUpdate("insert into hfb_cashing_record values(2,'132555ddd','2018-11-10',100,'afdsdf')" );
        st.close();
        connection.close();
    }

JDBC通过SSH远程连接Mysql数据库_第1张图片

以上代码可分为两层进行编辑,一层用于连接SSH并设置号本地代理,另一层用于连接数据库--(代码已初步实现功能,代码的部分优化后续再说)  O(∩_∩)O~嘿嘿

你可能感兴趣的:(java)