connexion à mysql avec java: java.net.ConnectException: Connection refused
Bonjour ;) ,
Je teste une connexion à une bdd mysql via java avec le programme ci-dessous:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| try
{
System.out.println("Connexion au driver JDBC");
Class.forName("com.mysql.jdbc.Driver").newInstance();
System.out.println("Driver com.mysql.jdbc.Driver chargé");
try
{
System.out.println("Connexion a la base de données");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost :3306/information_schema","root","");
System.out.println("Base de données connectée");
}
catch (SQLException ex)
{
// la connexion a la base de données n_a pas pu être établie
// voici les codes erreurs retournés
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
}
catch (Exception ex)
{
// Le driver n_a pas pu être chargé
// vérifier que la variable CLASSPATH est bien renseignée
System.out.println(ex.toString());
} |
J'obtiens les messages d'erreurs suivants et je n'arrive donc pas à comprendre pourquoi la connexion échoue:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| Connection au driver JDBC
Driver com.mysql.jdbc.Driver chargé
Connection a la base de données
SQLException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.ConnectException
MESSAGE: Connection refused
STACKTRACE:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:208)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:173)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:268)
at com.mysql.jdbc.Connection.createNewIO(Connection.java:2745)
at com.mysql.jdbc.Connection.<init>(Connection.java:1553)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at extraction.participants.Participants.main(Participants.java:23)
** END NESTED EXCEPTION **
Last packet sent to the server was 33 ms ago.
SQLState: 08S01
VendorError: 0 |
Avec phpMyAdmin, l'accès à toutes bdd mysql se fait sans problème pour root sans mot de passe ou pour un utilisateur particulier.
Voici ma configuration:
- Mandriva Linux Spring 2007
- Version du client MySQL: 5.0.37
- mysql-connector-java-5.0.6-bin.jar
- java version "1.6.0_01"
Merci d'avance pour toutes vos suggestions car je suis complètement aux abois après des heures et des heures de recherches infructueuses.
:arf:
Résolu je ne sais par quelle magie.
Merci pour ton intervention mais mon problème est résolu. :yaisse2:
En fait, j'ai essayé ceci:
dans le fichier my.cnf, j'ai mis en commentaire la ligne suivante:
skip-networking
qui est donc devenue :
# skip-networking
Après cette opération il faut redémarrer le serveur mysql (sous root):
soit
shell> service mysqld stop
shell> service mysqld start
ou
shell>/etc/init.d/mysqld stop
shell>/etc/init.d/mysqld start
Par ailleurs, dans un autre forum, la solution suivante a été proposée:
Citation:
Donc tu peux essayer 2 choses :
ajouter "bind-address 127.0.0.1" dans /etc/hosts.allow
et/ou
commenter l'option "skip-networking" dans /etc/mysql/my.cnf
Je ne sais pas ce qui s'est passé mais le redémarrage de mysql n'a pas suffi, j'ai dû redémarrer le système pour que les changements prennent effet.
Mais d'après ce que j'ai lu ici et là, ce problème peut avoir plusieurs origines dont le firewall justement, mais il me semble qu'étant sous linux, ça ne pouvait pas être le cas pour moi...