Mysql EOFEException,SSH端口转发

Mysql EOFEException,SSH端口转发,mysql,ssh,Mysql,Ssh,} 我在windows计算机上安装了SSH secure shell客户端。我正在尝试连接linux计算机上安装的mysql服务器 现在我得到以下错误: 连接的 本地主机:443->10.99.69.10:3306 转发端口 com.mysql.jdbc.CommunicationsException:由于基础异常导致的通信链路故障: **开始嵌套异常** com.mysql.jdbc.CommunicationsException 消息:由于基础异常导致通信链路故障: **开始嵌套异常**

}


我在windows计算机上安装了SSH secure shell客户端。我正在尝试连接linux计算机上安装的mysql服务器

现在我得到以下错误:

连接的 本地主机:443->10.99.69.10:3306 转发端口 com.mysql.jdbc.CommunicationsException:由于基础异常导致的通信链路故障:

**开始嵌套异常**

com.mysql.jdbc.CommunicationsException 消息:由于基础异常导致通信链路故障:

**开始嵌套异常**

java.io.EOFException 消息:无法从服务器读取响应。预期读取4个字节,在连接意外丢失之前读取0个字节

堆栈跟踪:

java.io.EOFEException:无法从服务器读取响应。预期读取4个字节,在连接意外丢失之前读取0个字节。 在com.mysql.jdbc.MysqlIO.readFully上(MysqlIO.java:1997) 位于com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:573) 位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1044) 在com.mysql.jdbc.Connection.createNewIO上(Connection.java:2775) 位于com.mysql.jdbc.Connection(Connection.java:1555) 位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 位于java.sql.DriverManager.getConnection(未知源) 位于java.sql.DriverManager.getConnection(未知源) 位于com.soul.db.JdbcSSHConnection.main(JdbcSSHConnection.java:54)

**结束嵌套异常**

上次发送到服务器的数据包是0毫秒前的

堆栈跟踪:

com.mysql.jdbc.CommunicationsException:由于基础异常导致的通信链路故障:

**开始嵌套异常**

java.io.EOFException 消息:无法从服务器读取响应。预期读取4个字节,在连接意外丢失之前读取0个字节

堆栈跟踪:

java.io.EOFEException:无法从服务器读取响应。预期读取4个字节,在连接意外丢失之前读取0个字节。 在com.mysql.jdbc.MysqlIO.readFully上(MysqlIO.java:1997) 位于com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:573) 位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1044) 在com.mysql.jdbc.Connection.createNewIO上(Connection.java:2775) 位于com.mysql.jdbc.Connection(Connection.java:1555) 位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 位于java.sql.DriverManager.getConnection(未知源) 位于java.sql.DriverManager.getConnection(未知源) 位于com.soul.db.JdbcSSHConnection.main(JdbcSSHConnection.java:54)

**结束嵌套异常**

上次发送到服务器的数据包是0毫秒前的。 位于com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:641) 位于com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1044) 在com.mysql.jdbc.Connection.createNewIO上(Connection.java:2775) 位于com.mysql.jdbc.Connection(Connection.java:1555) 位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 位于java.sql.DriverManager.getConnection(未知源) 位于java.sql.DriverManager.getConnection(未知源) 位于com.soul.db.JdbcSSHConnection.main(JdbcSSHConnection.java:54)

**结束嵌套异常**

上次发送到服务器的数据包是0毫秒前的。 位于com.mysql.jdbc.Connection.createNewIO(Connection.java:2847) 关闭SSH连接 位于com.mysql.jdbc.Connection(Connection.java:1555) 位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 位于java.sql.DriverManager.getConnection(未知源) 位于java.sql.DriverManager.getConnection(未知源)
在com.soul.db.jdbcshconnection.main(jdbcshconnection.java:54)

您解决了这个问题吗?我也面临同样的问题
package com.soul.db;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.sql.Connection;
public class JdbcSSHConnection {

/**
 * Java Program to connect to remote database through SSH using port forwarding

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

    int lport=443;
    String rhost="10.99.69.10";
    String host="10.105.27.201";
    int rport=3306;
    String user="root";
    String password="SysPassword1";
    String dbuserName = "root";
    String dbpassword = "DBPassword1";

    String url = "jdbc:mysql://localhost:"+lport+"/proj_db";//"jdbc:mysql://localhost:3306", "root", "mysql"
    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(); 
        Class.forName("com.mysql.jdbc.Driver");

        conn = DriverManager.getConnection (url, "root", "DBPassword1");

        // step3 create the statement object
        Statement stmt = conn.createStatement();
        System.out.println ("Database connection established");
        // step4 execute query
        ResultSet rs = stmt.executeQuery("select DISTINCT STUD_NAME from STUD_DETAILS;");
        while (rs.next())
        System.out.println(rs.getString(1));

        // step5 close the connection object
        conn.close();

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