Impossible de se connecter à MySQL sur Windows 7 en utilisant JDBC, mais fonctionne via phpmyadmin et d’autres outils d’administration?

TL; DR:

Chaque fois que j’essaie d’utiliser JDBC pour me connecter à un serveur MySQL local (qui fonctionne sur des tonnes d’autres clients sql), il ne se connecte pas du tout et je reçois une exception:

  • Exception dans le thread “main” com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: échec du lien de communication
  • …. trace de la stack ….
  • Causé par: java.net.SocketException: argument non valide: connect

Plus d’informations détaillées:

J’ai un serveur MySQL local en cours d’exécution auquel je peux me connecter en utilisant les informations suivantes:

  • adresse: localhost ou 127.0.0.1 (les deux fonctionnent)
  • port: 3306
  • et mon nom d’utilisateur / mot de passe / nom de firebase database

Utilisation des applications: HeidiSQL, phpmyadmin, MySQL Workbench et mysqladmin

L’ exécution de la version de mysqladmin confirme que le serveur fonctionne, et que tcp / ip est activé.

Faire des variables mysqladmin montre que “skip_networking” est désactivé (voir ci-dessous pour la configuration complète).

Le journal MySQL ne montre rien d’extraordinaire (également ci-dessous).

J’utilise le connecteur JDBC v5.1.15, mysql-connector-java-5.1.15-bin.jar. C’est dans mon chemin de classe de projet avec Eclipse.

Tous les pare-feu Windows 7 (Ultimate, 64bit si nécessaire) sont désactivés.

Pourtant, je reçois toujours l’erreur de trace de la stack, comme indiqué ci-dessous. Je ne peux pas pour la vie de moi comprendre ce qui ne va pas quand tout le rest est capable de se connecter très bien …

J’ai essayé d’inclure toutes les informations pertinentes ci-dessous. J’espère que c’est juste quelque chose de simple et de stupide que j’ai négligé et que je ne trouve pas parce que j’ai l’air trop dur … mais hein qui sait: / heh.

J’ai essayé tout ce que j’ai pu trouver dans d’autres questions similaires en ligne, mais rien ne semble fonctionner (incl. Https://stackoverflow.com/a/2985169/211750 , https://stackoverflow.com/a/2103092 / 211750 , https://serverfault.com/questions/89955/unable-to-connect-to-mysql-through-jdbc-connector-through-tomcat-or-external et autres

Mon code de test:

package sqltest; import com.mysql.jdbc.Driver; import java.sql.DriverManager; import java.util.Properties; public class main { public static void main(Ssortingng[] args) throws Exception { Ssortingng url = "jdbc:mysql://localhost:3306/dbname?user=user&password=****&"; Driver driver = (Driver) Class.forName("com.mysql.jdbc.Driver").newInstance(); DriverManager.getConnection(url); } } 

Trace de stack: http://pastebin.com/qv332y86

Vidage des variables MySQL: http://pastebin.com/merSEDdD

My.ini: http://pastebin.com/EWZX2enz

MySQL version mysqladmin :

 Server version 5.5.20-log Protocol version 10 Connection localhost via TCP/IP TCP port 3306 Uptime: 1 min 37 sec Threads: 1 Questions: 17 Slow queries: 0 Opens: 33 Flush tables: 1 Open tables: 26 Queries per second avg: 0.175 

Journal MySQL:

 120314 21:37:20 [Note] Plugin 'FEDERATED' is disabled. 120314 21:37:20 InnoDB: The InnoDB memory heap is disabled 120314 21:37:20 InnoDB: Mutexes and rw_locks use Windows interlocked functions 120314 21:37:20 InnoDB: Compressed tables use zlib 1.2.3 120314 21:37:20 InnoDB: Initializing buffer pool, size = 128.0M 120314 21:37:20 InnoDB: Completed initialization of buffer pool 120314 21:37:20 InnoDB: highest supported file format is Barracuda. 120314 21:37:20 InnoDB: Waiting for the background threads to start 120314 21:37:21 InnoDB: 1.1.8 started; log sequence number 1619921 120314 21:37:21 [Note] Event Scheduler: Loaded 0 events 120314 21:37:21 [Note] wampmysqld: ready for connections. Version: '5.5.20-log' socket: '' port: 3306 MySQL Community Server (GPL) 120314 21:38:02 [Note] wampmysqld: Normal shutdown 120314 21:38:02 [Note] Event Scheduler: Purging the queue. 0 events 120314 21:38:02 InnoDB: Starting shutdown... 120314 21:38:02 InnoDB: Shutdown completed; log sequence number 1619921 120314 21:38:02 [Note] wampmysqld: Shutdown complete 

Il s’est avéré que c’était Java qui préférait IPv6 à tout gâcher alors j’ai dû append -Djava.net.preferIPv4Stack = true, mais comme je faisais les choses sous Tomcat, je devais passer par une méthode de configuration de la propriété. Je ne suis pas sûr de la manière standard de le faire (le cas échéant) mais je l’ai fait en éditant Catalina.bat et en ajoutant -Djava.net.preferIPv4Stack = true à la fin du fichier. Voir:

 rem Execute Java with the applicable properties if not "%JPDA%" == "" goto doJpda if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% goto end :doSecurity %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% goto end :doJpda if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% goto end :doSecurityJpda %_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.net.preferIPv4Stack=true -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION% goto end :end 

ou pour tomcat, CATALINA_OPTS peut être défini dans la variable d’environnement