| Bug #64983 | 5.1.19 not working with JBoss AS 4.2.3.GA | ||
|---|---|---|---|
| Submitted: | 14 Apr 2012 23:08 | Modified: | 1 May 2012 3:37 |
| Reporter: | Kenneth Christensen | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | Connector / J | Severity: | S2 (Serious) |
| Version: | 5.1.19 | OS: | Any |
| Assigned to: | Alexander Soklakov | CPU Architecture: | Any |
| Tags: | regression | ||
[14 Apr 2012 23:08]
Kenneth Christensen
[16 Apr 2012 13:23]
Alexander Soklakov
Hello Kenneth! Thanks for your report. But I cannot repeat this on my system. Could you provide more details: OS, jvm version, mysql server version, datasource config?
[20 Apr 2012 8:24]
Eric Cartman
I have the same problem with the 5.1.19 version of the Java connector together with JBoss 6.1.0 on a 64 bit RHEL. The MySQL server version is 5.5.12 and my datasource configuration file looks as follows: <?xml version="1.0" encoding="UTF-8"?> <datasources> <local-tx-datasource> <jndi-name>foo</jndi-name> <connection-url>jdbc:mysql://localhost/bar?useUnicode=true&characterEncoding=utf8</connection-url> <driver-class>com.mysql.jdbc.Driver</driver-class> <user-name>user</user-name> <password>password</password> <min-pool-size>5</min-pool-size> <max-pool-size>150</max-pool-size> <exception-sorter-class-name>com.mysql.jdbc.integration.jboss.ExtendedMysqlExceptionSorter</exception-sorter-class-name> <valid-connection-checker-class-name>com.mysql.jdbc.integration.jboss.MysqlValidConnectionChecker</valid-connection-checker-class-name> </local-tx-datasource> </datasources> This must be a regression as everything was working fine in version 5.1.18 and also in earlier versions of the connector. I haven't changed the datasource configuration or MySQL server setup at all, just updated the connector to 5.1.19 and it does no longer work.
[20 Apr 2012 8:46]
Alexander Soklakov
Hi Eric, Could you get tcpdump of that bad handshake? I still cannot repeat the problem.
[20 Apr 2012 9:25]
Eric Cartman
Unfortunately i cannot get such a dump, i do not even have root access on that machine. If i can help by providing some other information, please let me know.
[20 Apr 2012 10:01]
Alexander Soklakov
Eric, One question: do you use "old-passwords" option, i.e. old-style password encryption? I've got "Bad handshake" with that one. It looks like bug in MysqlOldPasswordPlugin implementation.
[20 Apr 2012 20:31]
Kenneth Christensen
I'm not using the "old passwords" option:
| old_passwords | OFF
The MySQL version is 5.5.21 and I have only tested it on my development machine which is a Mac OS X 10.7.3 and JDK 1.6.0_31.
Here is my datasource:
<datasources>
<local-tx-datasource>
<jndi-name>EgenkontrolDS</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/egenkontrol</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name><user></user-name>
<password><password></password>
<min-pool-size>1</min-pool-size>
<max-pool-size>10</max-pool-size>
<!-- The number of prepared statements per connection to be kept open and reused in subsequent requests. They are stored in a LRU cache. The default is 0 (zero), meaning no cache. -->
<prepared-statement-cache-size>50</prepared-statement-cache-size>
<!-- Uses the pingDatabase method to check a connection is still valid before handing it out from the pool -->
<valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
<!-- Checks the MySQL error codes and messages for fatal errors -->
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
</local-tx-datasource>
</datasources
Above works fine with 5.1.18 but not with 5.1.19.
[23 Apr 2012 8:37]
Alexander Soklakov
Kenneth, What is the length of password hash (select length(Password) from mysql.user where User='youruser')? Is it 16 or 41 bytes long?
[23 Apr 2012 8:42]
Kenneth Christensen
Alexander, The length of the password hash is 16 bytes long.
[23 Apr 2012 9:08]
Alexander Soklakov
Kenneth, So, you do use old-style password hash which requires "mysql_old_password" plugin during handshake. Try to replace 16-bytes hash with 41-bytes one (see http://dev.mysql.com/doc/refman/5.5/en/password-hashing.html).
[23 Apr 2012 9:26]
Kenneth Christensen
Looks like it's working now, after setting the password to a 41 bytes long hash. Thanks.
[23 Apr 2012 9:36]
Alexander Soklakov
Good, so this is a bug in MysqlOldPasswordPlugin.
[1 May 2012 3:37]
John Russell
Added to changelog for 5.1.20: Using Connector/J 5.1.19 in combination with JBoss could result in an error while establishing a connection: MySQLNonTransientConnectionException: Bad handshake. This issue occurred when using the old-style password hash, which requires the mysql_old_password plugin during handshake. A workaround was to replace the 16-byte hash with a 41-byte one, as explained in .
