IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Connexion à MySQL avec JDBC : communication link failure


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 27
    Points
    27
    Par défaut Connexion à MySQL avec JDBC : communication link failure
    Bonjour,
    Je coince actuellement sur un problème sur lequel même si on trouve beaucoup de propositions de solution sur le net, je ne trouve pas mon bonheur (ou ne comprends pas les réponses).
    Voila j'essaye de me connecter à une base de données hébergées pour laquelle j'ai les infos suivantes:
    hote de connexion:hoteConnexion
    nom de la base:nomBase
    nom d'utilisateur: user
    mot de passe: mdp.
    nom de domaine: nomDomaine
    Pour me connecter à la base je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    package com.pda.metier;
     
    import java.sql.*;
    import java.util.Properties;
    public class Connexion
    {
        // The JDBC Connector Class.
        private static final String dbClassName = "com.mysql.jdbc.Driver";
     
        private static final String CONNECTION = "jdbc:mysql://ndm:3306/nomBase";
     
        public static void main(String[] args) throws  ClassNotFoundException,SQLException {
            System.out.println(dbClassName);
            Class.forName(dbClassName);
            Properties p = new Properties();
            p.put("user","user");
            p.put("password","mdp");
            Connection c = DriverManager.getConnection(CONNECTION,p);
            System.out.println("It works !");
            c.close();
        }
    }
    Et là c'est le drame, je prend une erreur:
    com.mysql.jdbc.Driver
    Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

    Last packet sent to the server was 0 ms ago.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2104)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:729)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:302)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:283)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.pda.metier.Connexion.main(Connexion.java:26)
    Caused by: java.net.ConnectException: Connection timed out: connect
    at java.net.DualStackPlainSocketImpl.connect0(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:256)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:276)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2027)
    ... 12 more
    Alors que si je remplace le nom de domaine:port par localhost:8080 ça fonctionne (en local, avec Wamp)
    Quelqu'un peut il m'aider la dessus?

    Merci par avance

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    salut ,
    ndm c´est quoi?
    et quand tu fais un ping, qu´est ce que cela te donnes:
    , si tu est en local, remplace le par localhost.

    Eric

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Roumanie

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2015
    Messages : 26
    Points : 42
    Points
    42
    Par défaut
    Citation Envoyé par solero07 Voir le message
    Alors que si je remplace le nom de domaine:port par localhost:8080 ça fonctionne (en local, avec Wamp)
    Quelqu'un peut il m'aider la dessus?
    Cela veut dire que ta base écoute sur le port local 8080, ce qui me semble étrange.

    Il faut que tu saches sur quel port elle écoute (3306 ou 8080). De plus, si tu veux utiliser un nom de domaine dans ta chaine de connexion, il faut qu'il soit dans ton fichier HOSTS..

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Bonsoir!
    Alors ndm c'est une coquille de ma part c'est nom de domaine, www.machinTruc.fr
    Jeffray03, si je ping sur mon nom de domaine ps de problème.
    Bgdnpm, normalement une bd mysql ecoute sur le port 3306? Par contre effectivement j'ai pas rajouté de ligne dans etc/hosts, et j'ai de vagues souvenir de reseau: je rajoute une ligne avec l'ip du nom de domaine et le nom de domaine?
    Merci en tout cas pour votre aide!
    J'ai rajouté dans etc/hosts 194.XXXXXXXX www.machineTruc.fr, pas de changement!

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Pour bgdnpn, effectivement pour me connecter sur la base en local je passe par le port 3306, et non par 8080...

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par solero07 Voir le message
    Bgdnpm, normalement une bd mysql ecoute sur le port 3306?
    Oui, le port 8080 en général c'est le port de tomcat, jboss ou glassfish pour le web.

    Citation Envoyé par solero07 Voir le message
    Par contre effectivement j'ai pas rajouté de ligne dans etc/hosts, et j'ai de vagues souvenir de reseau: je rajoute une ligne avec l'ip du nom de domaine et le nom de domaine?
    Tu fais ce que tu veux, il faut qu'au final faire un
    nslookup <nom de domaine> te renvoie son IP

    Par contre j'ai l'impression que t'es occupé d'essayer de te connecter à n'importe quoi là. C'est quoi le nom de domaine que tu tappe? T'es sur qu'une base mysql écoute dessus?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2011
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Bonsoir,
    nslookup <nom de domaine> me renvoie bien l'adresse ip du nom du domaine, quand je ping sur ce nom de domaine pas de problème.
    Par contre effectivement je pense effectivement que j'essaye de me connecter à n'importe quoi, car d'habitude je ne fais que du local et là je vois pas trop!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jdbc:mysql://nomDeDomaine:3306/nomDeLaBase
    Avec pour nom de domaine l'adresse du site (www.machinTruc.fr).
    Quand je tape ça je n'utilise pas l'information "hôte de connexion MySql" donnée par l'hébergeur (nuxit), qui je suppose doit bien aller quelque part.
    Et j'ai l'impression au final de pointer plus sur le site que sur le serveur qui stocke la BD derrière.

  8. #8
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Tu essayes de te connecter a ta base de données depuis chez toi ou ailleurs que chez l'hébergeur lui même ?? Si oui, je ne suis pas sure que tu puisse te connecter a la DB directement comme cela. En général, c'est ton site web qui se connecte et qui a la permission d'accéder a la DB, après je peux me tromper.

    D'ailleurs si c'est nuxit, il est clairement marqué ici la réponse sauf si c'est un serveur dédié.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    La plupart des hébergeurs fournissant du mysql ne routent pas les connexion mysql par sécurité. Les serveur mysql étant dans une zone privée, accessible uniquement par les serveur web internes.

  10. #10
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    La plupart des hébergeurs fournissant du mysql ne routent pas les connexion mysql par sécurité. Les serveur mysql étant dans une zone privée, accessible uniquement par les serveur web internes.
    We we et c'est par mesure de sécurité que d'ailleurs, lui même mysql n'autorise pas par défaut les accès distants.

    Même dans un réseau local il m'a été très difficile de parvenir à communiquer avec mon serveur à partir d'autres machines. Pour y arriver, il fallait que je tripote un peu dans le fichier de configuration du serveur afin de lui dire d’accepter toute demande provenant d'ailleurs (donc d'autres ip que le localhost). Mais cela n'était pas une bonne pratique parce que mon serveur était exposé (déconseillé). J'avais ensuite remis la politique de sécurité par défaut du serveur et j'avais créé des services web que j'avais héberger sur le même poste sur lequel était installé mon serveur mysql et tout allait mieux.

    A+
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  11. #11
    Modérateur
    Avatar de wax78
    Homme Profil pro
    Chef programmeur
    Inscrit en
    Août 2006
    Messages
    4 074
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chef programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 074
    Points : 7 978
    Points
    7 978
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    que je tripote un peu dans le fichier de configuration du serveur afin de lui dire d’accepter toute demande provenant d'ailleurs (donc d'autres ip que le localhost).
    Y'a une table dans mysql je pense pour faire ce genre de règles.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Tu dois autoriser les connexions distantes par utilisateur car mysql gère les droit par combinaison user / origine.
    Tu dois activer l'écoute sur le réseau, car par défaut mysql n'écoute que sur la socket
    Tu dois activer l'écoute réseau distante, car par défaut quand tu active le réseau, ce n'est que via 127.0.0.1

    Personellement, je ne suis pas fan de faire tourner le mysql sur le même serveur que les webservice. Chacun son boulot. Le serveur web a des besoin de ressources différents d'un serveur DB, je n'aime pas devoir faire un compromis genre je ralentis la base pour avoir les ressources pour le serveur web.

  13. #13
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Personellement, je ne suis pas fan de faire tourner le mysql sur le même serveur que les webservice. Chacun son boulot. Le serveur web a des besoin de ressources différents d'un serveur DB, je n'aime pas devoir faire un compromis genre je ralentis la base pour avoir les ressources pour le serveur web.
    Comment tu fais alors? Tu achètes deux Hébergements (un pour MySQL et un autres pour tes WS) ou comment?
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  14. #14
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Si c'est du dédié tu peux vitrualiser. Ainsi les services privés tournent sur une machine, le serveur web sur un autre et seul le serveur web est explosé.

    Mais en général il est vrai que je suis plutôt sur des structures auto gérées, par sur de la location. Ca permet de mettre le serveur SQL en privé et le web dans le DMZ.

  15. #15
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Points : 1 493
    Points
    1 493
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Si c'est du dédié tu peux vitrualiser. Ainsi les services privés tournent sur une machine, le serveur web sur un autre et seul le serveur web est explosé.

    Mais en général il est vrai que je suis plutôt sur des structures auto gérées, par sur de la location. Ca permet de mettre le serveur SQL en privé et le web dans le DMZ.
    Merci, c'est très instructif...
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/04/2012, 18h05
  2. Réponses: 0
    Dernier message: 22/04/2009, 19h03
  3. Réponses: 1
    Dernier message: 31/12/2007, 16h00
  4. [MySQL et Servlet] Communication link failure
    Par spk4ever dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/12/2005, 09h32
  5. Réponses: 6
    Dernier message: 15/05/2005, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo