Bug #2287 Connector/J V3.0.6 cannot connect to MySql 5.0.0 alpha
Submitted: 5 Jan 2004 9:03 Modified: 5 Jan 2004 9:17
Reporter: Ivan Monnier Email Updates:
Status: Not a Bug Impact on me:
None 
Category:Connector / J Severity:S2 (Serious)
Version:3.0.6 with 5.0.0 server OS:Solaris (Solaris 8)
Assigned to: Mark Matthews CPU Architecture:Any

[5 Jan 2004 9:03] Ivan Monnier
Description:
We get :

ERROR:main():Connection Error:Communication link failure: java.io.IOException, underlying cause: Unexpected end of input stream

** BEGIN NESTED EXCEPTION ** 

java.io.IOException
MESSAGE: Unexpected end of input stream

STACKTRACE:

java.io.IOException: Unexpected end of input stream
        at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:1073)
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:619)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:1511)
        at com.mysql.jdbc.Connection.<init>(Connection.java:485)
        at com.mysql.jdbc.Driver.connect(Driver.java:341)
        at java.sql.DriverManager.getConnection(DriverManager.java:517)
        at java.sql.DriverManager.getConnection(DriverManager.java:177)
        at mysqlconn.main(mysqlconn.java:24)

** END NESTED EXCEPTION **

How to repeat:
Compile this little program mysqlconn.java :

import java.sql.*;

public class mysqlconn {

  static void usage() {
        System.out.println("\nUsage: java urlconn driver url user password\n");
  }

  public static void main ( String[] args ) {

     Connection con;

     if (args.length != 4) {
        usage();
        return;
     }

     try {
       Class.forName(args[0]);               
       con = DriverManager.getConnection(args[1],args[2],args[3]);                                                  
     }
     catch ( ClassNotFoundException cnfe) {
       System.out.println("ERROR:main():JDBC driver not found verify CLASSPATH:" + cnfe.getMessage());                              
       return;
     }
     catch (Exception e) {
       System.out.println("ERROR:main():Connection Error:" + e.getMessage());                                                       
       return;
     }
  }
}

Launch it on a V5.0.0 server : 
java mysqlconn "com.mysql.jdbc.Driver" "jdbc:mysql://localhost/qwam_test" "john" "doe"
ERROR:main():Connection Error:Communication link failure: java.io.IOException, underlying cause: Unexpected end of input stream

** BEGIN NESTED EXCEPTION ** 

java.io.IOException
MESSAGE: Unexpected end of input stream

STACKTRACE:

java.io.IOException: Unexpected end of input stream
        at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:1073)
        at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:619)
        at com.mysql.jdbc.Connection.createNewIO(Connection.java:1511)
        at com.mysql.jdbc.Connection.<init>(Connection.java:485)
        at com.mysql.jdbc.Driver.connect(Driver.java:341)
        at java.sql.DriverManager.getConnection(DriverManager.java:517)
        at java.sql.DriverManager.getConnection(DriverManager.java:177)
        at mysqlconn.main(mysqlconn.java:24)

** END NESTED EXCEPTION **

launch it on a V3.23.55 server :

java mysqlconn "com.mysql.jdbc.Driver" "jdbc:mysql://localhost/qwam_test" "john" "doe"             
ERROR:main():Connection Error:Invalid authorization specification: Access denied for user: 'john@localhost' (Using password: YES)
 040105 17:49:56  mysqld ended

Which is correct !
[5 Jan 2004 9:17] Mark Matthews
5.0.0 uses a new authentication scheme which 3.0.6 doesn't know anything about.

You need to upgrade to Connector/J 3.0.9 (or a nightly build of 3.0.x from http://downloads.mysql.com/snapshots.php) to connect to MySQL-5.0.0