Impossible de se connecter à MySQL avec JDBC - Délai de connexion - Ubuntu 9.04

StackOverflow https://stackoverflow.com/questions/2938543

  •  05-10-2019
  •  | 
  •  

Question

Je suis en cours d'exécution Ubuntu et je suis finalement tente de se connecter Tomcat à ma base de données MySQL en utilisant JDBC.

Il a travaillé auparavant , mais après un redémarrage de l'instance échoue maintenant de se connecter.

  • Tomcat 6 et MySQL 5.0.75 sont sur la même machine
  • Chaîne de connexion: jdbc: mysql: /// localhost: 3306
  • je peux connecter à MySQL sur la ligne de commande en utilisant la commande mysql
  • Le fichier my.cnf est assez standard (disponible sur demande) a l'adresse bind: 127.0.0.1
  • Je ne peux pas Telnet au port de MySQL malgré netstat disant MySQL écoute
  • J'ai une règle iptables à transmettre 80 -.> 8080 et aucun pare-feu je connais

Je suis assez nouveau pour cela et je ne suis pas sûr de ce que pour tester. Je ne sais pas si je devrais regarder dans / etc interfaces et si je l'ai fait ce qu'il faut chercher. Il est étrange parce qu'il a utilisé au travail, mais après un redémarrage, il est en bas, donc je dois avoir changé quelque chose ....:).

Je réalise un délai d'attente indique que le serveur ne répond pas et je suppose que c'est parce que la demande n'est pas réellement obtenir à travers. J'ai installé MySQL via apt-get et Tomcat manuellement.

mysqld

root@88:/var/log/mysql#  ps -ef | grep mysqld
root     21753     1  0 May27 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe
mysql    21792 21753  0 May27 ?        00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/run/mysqld/mysqld.sock
root     21793 21753  0 May27 ?        00:00:00 logger -p daemon.err -t mysqld_safe -i -t mysqld
root     21888 13676  0 11:23 pts/1    00:00:00 grep mysqld

netstat

root@88:/var/log/mysql# netstat -lnp | grep mysql
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      21792/mysqld
unix  2      [ ACC ]     STREAM     LISTENING     1926205077 21792/mysqld        /var/run/mysqld/mysqld.sock

Toy Connection Class

root@88:~# cat TestConnect/TestConnection.java

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class TestConnection {

  public static void main(String args[]) throws Exception {
    Connection con = null;

    try {
      Class.forName("com.mysql.jdbc.Driver").newInstance();
      System.out.println("Got driver");
      con = DriverManager.getConnection(
                "jdbc:mysql:///localhost:3306",
                "uname", "pass");
      System.out.println("Got connection");

      if(!con.isClosed())
        System.out.println("Successfully connected to " +
          "MySQL server using TCP/IP...");

    } finally {
        if(con != null)
          con.close();
    }
  }
}

Toy classe de connexion de sortie

Note:. Ceci est la même erreur que je reçois de Tomcat

root@88:~/TestConnect# java -cp mysql-connector-java-5.1.12-bin.jar:. TestConnection
Got driver
                Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 1 milliseconds ago. The driver has not received any packets from the server.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)            
        at TestConnection.main(TestConnection.java:14)
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
        at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
        at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1122)
        at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344)
        at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2181)
        ... 12 more
Caused by: java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        ... 13 more

Sortie Telnet

root@88:~/TestConnect# telnet localhost 3306
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection timed out
Était-ce utile?

La solution

Netstat montre que MySQL est en effet écoute sur le port 3306 sur toutes les adresses locales. Depuis telnet ne peut pas se connecter à 127.0.0.1 il un pare-feu qui arrête votre vous -. Essayez en cours d'exécution sudo ufw default allow à effectivly désactiver ou sudo ufw allow 3306 et voir si elle apporte des modifications

Autres conseils

Qu'est-ce que votre / etc / hosts fichier ressemble? Avez-vous une entrée comme celle qui suit?

127.0.0.1   localhost

Pouvez-vous essayer de telnet:

telnet 127.0.0.1 3306 or telnet 127.0.0.1:3306

ou JDBC se connecter à:

jdbc:mysql://127.0.0.1:3306

La chaîne de connexion doit être

jdbc:mysql://localhost:3306

au lieu de

jdbc:mysql:///localhost:3306

Aussi sur unix / linux, par défaut, la communication client / serveur se fait via le fichier socket unix et non via tcp / ip. Par conséquent, vous n'êtes pas en mesure de telnet au port 3306 sur votre machine locale.

vous utilisez toujours la même signature pour la méthode getConnection, ou est-ce que l'une des choses que vous avez modifiés avant qu'il a cessé de travailler? (Le « /// » dans les suggestions de chaîne était un ajout récent.)

Dans ce nouveau code, vous pouvez essayer la chaîne de connexion suivante:

Chaîne dbUrl = "jdbc: mysql: // localhost: 3306 / [db] user = [utilisateur] & password = [mot de passe]"; Connection conn = DriverManager.getConnection (dbUrl);

Ceci est le format exemple sur la page de documentation mysql.com:

http: //dev.mysql .com / doc / refman / 5.0 / es / connecteur-j-usagenotes-basic.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top