jeudi 8 janvier 2015

I can not connect mysql server via ssh


I installed SSH secure shell client on my windows machine.I am trying to connect mysql server installed in linux machine, throw java code using JDBC.


Here is my JDBC code:


package com.abc.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.105.27.201";
String host="10.105.27.201";
int rport=22;
String user="root";
String password="PassW1";
String dbuserName = "root";
String dbpassword = "PassWDB1";
String url = "jdbc:mysql://localhost:"+lport+"/odk_prod";//"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", "PassWDB1");
// step3 create the statement object
Statement stmt = conn.createStatement();
System.out.println ("Database connection established");
// step4 execute query
ResultSet rs = stmt.executeQuery("select * from SEMP1;");
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();
}
}
}


}




Now i am getting below Error:


Connected localhost:443 -> 10.105.27.201:22 Port Forwarded Closing SSH Connection com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:


** BEGIN NESTED EXCEPTION **


com.mysql.jdbc.CommunicationsException MESSAGE: Communications link failure due to underlying exception:


** BEGIN NESTED EXCEPTION **


java.io.EOFException MESSAGE: Can not read response from server. Expected to read 4,739,923 bytes, read 17 bytes before connection was unexpectedly lost.


STACKTRACE:


java.io.EOFException: Can not read response from server. Expected to read 4,739,923 bytes, read 17 bytes before connection was unexpectedly lost. at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1997) at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:611) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1044) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775) at com.mysql.jdbc.Connection.(Connection.java:1555) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.soul.db.JdbcSSHConnection.main(JdbcSSHConnection.java:52)


** END NESTED EXCEPTION **


Last packet sent to the server was 0 ms ago.


STACKTRACE:


com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:


** BEGIN NESTED EXCEPTION **


java.io.EOFException MESSAGE: Can not read response from server. Expected to read 4,739,923 bytes, read 17 bytes before connection was unexpectedly lost.


STACKTRACE:


java.io.EOFException: Can not read response from server. Expected to read 4,739,923 bytes, read 17 bytes before connection was unexpectedly lost. at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1997) at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:611) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1044) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775) at com.mysql.jdbc.Connection.(Connection.java:1555) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.soul.db.JdbcSSHConnection.main(JdbcSSHConnection.java:52)


** END NESTED EXCEPTION **


Last packet sent to the server was 0 ms ago. at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:641) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1044) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775) at com.mysql.jdbc.Connection.(Connection.java:1555) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.soul.db.JdbcSSHConnection.main(JdbcSSHConnection.java:52)


** END NESTED EXCEPTION **


Last packet sent to the server was 0 ms ago. at com.mysql.jdbc.Connection.createNewIO(Connection.java:2847) at com.mysql.jdbc.Connection.(Connection.java:1555) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(Unknown Source) at java.sql.DriverManager.getConnection(Unknown Source) at com.soul.db.JdbcSSHConnection.main(JdbcSSHConnection.java:52)





Aucun commentaire:

Enregistrer un commentaire