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 à une base Mysql distante


Sujet :

JDBC Java

  1. #1
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Par défaut connexion à une base Mysql distante
    salut à tous
    j'arrive à me connecter sur ma base Mysql en local, mais quand j'essai de me connecter sur une base se trouvant sur une autre machine, j'ai le message d'erreur suivant:

    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
    23
     
    Erreur de connexion Communications link failure due to underlying exception: 
     
    ** BEGIN NESTED EXCEPTION ** 
     
    java.net.SocketException
    MESSAGE: java.net.ConnectException: Connection refused: connect
     
    STACKTRACE:
     
    java.net.SocketException: java.net.ConnectException: Connection refused: connect
    	at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    	at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
    	at com.mysql.jdbc.Connection.createNewIO(Connection.java:2555)
    	at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    	at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at java.sql.DriverManager.getConnection(Unknown Source)
    	at npn.Appels.<init>(Appels.java:43)
    	at npn.Appels.main(Appels.java:90)
     
     
    ** END NESTED EXCEPTION **
    quelqu'un peut m'aider à resoudre ce problème ?
    merci d'avance

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Le serveur n'accepte pas la connexion...

    • Vérifie bien que l'adresse IP et le port soient correctes.
    • Vérifie bien la configuration sur serveur MySQL. Il est possible que MySQL soit configuré pour refuser les connexions distantes...


    a++

  3. #3
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Par défaut
    merci pour ta reponse si rapide.
    j'utilise easyphp sur la machine distante avec la configuration par defaut du serveur mysql, et je pense que l'Ip et le port sont bien configurés.
    dans mon fichier My, j'ai cette ligne:
    je suppose que c'est ici que je doix modifier? si c'est le cas, comment demander au serveur d'accepter toute connexion des postes du reseau 192.168.1.0/24 ?
    merci

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    L'adresse 127.0.0.1 est celle de loopback (toutes les machines utilisent cette valeur particulière), tu ne peux pas l'utiliser pour une connexion à distance, il faut l'adresse de la machine distante.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Par défaut
    je crois que tu ne m'as pas compris.
    la ligne se trouve dans le fichier My.ini de mon serveur Mysql distant , donc je demandais juste si pour permettre les connexions à ce serveur à partir des machines du reseau, il faut modifier cette adresse 127.0.0.1 du fichier My.ini et mettre l'adresse reseau 192.168.1.0/24 ?

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il me semble (de mémoire) que mySQL n'est pas configuré par défaut pour accepter les connexions distantes, il faut (je crois) modifier la table host ou user mais je n'arrive plus à trouver, désolé...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 32
    Par défaut
    C'est exactement ça, dans la table des users, il y'a une colonne qui permet de spécifier le host de l'utilisateur, donc soit tes IP de serveurs et clients sont fixe, et dans ce cas, tu peux le fixer (et c'est plus sécurisé)
    Soit dans le pire des cas, tu rends la connexion pour cet utilisateur possible de n'importe ou ... je sais plus si la syntaxe est "%" ou "Any".

  8. #8
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    J'ai retrouvé...

    C'est donc % qu'il faut mettre (champ Host de la table user)

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

  9. #9
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Par défaut
    salut,
    j'ai fait tout ce que vous m'avez conseillé au niveau de la table user. malheureusement j'ai le meme message d'erreur.
    quelqu'un à une autre proposition à me faire ?

  10. #10
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    j'ai le même soucis, quelqu'un a t il une solution?
    j'arrive à me connecter en local ou sur la base mysql à distance via perl, mais impossible à distance via java.
    Pourtant j'ai bien dans mes conf mysql
    bind-address=0.0.0.0
    voici mn message d'erreur :
    Pilote com.mysql.jdbc.Driver en cours de chargement
    Pilote com.mysql.jdbc.Driver chargee
    connection à la base de données : 'jdbc:mysql://intranet/test' en cours
    SQLException: Access denied for user 'root'@'192.168.100.55' (using password: NO)
    SQLState: 28000
    VendorError: 1045
    Connection a la base de données impossible
    Merci

  11. #11
    Membre confirmé
    Homme Profil pro
    Consultant
    Inscrit en
    Avril 2006
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Avril 2006
    Messages : 92
    Par défaut
    Salut, tu peux poster ton code de connection ?
    il semble que tu n'envoies pas de mot de pass ou que tu n'a pas activer la demande de mots de passe. il doit y avoir une variable a passé a true.

    Regarde dans la doc de ton pilote de connection, c'est surment marqué.
    (comme quand tu veux te loguer en root sur mysql sur Linux et que tu n'est pas root)

  12. #12
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
     
    import java.sql.*;
    /*
     * Cette classe permet de se connecter à une base de données
     */
    public class connectionBD {
      // constructeur
      public connectionBD () {
      }
      // Methode : Afficher message
      private static void affiche(String message) {
          System.out.println(message);
       }
     
      private static void arret(String message) {
          System.err.println(message);
          System.exit(99);
       }
     
      //Methode chargement du pilote
      public void connectionDriver(String driver) {
          try {
        	  affiche("Pilote "+driver+" en cours de chargement");
        	  Class.forName(driver).newInstance();
        	  affiche("Pilote "+driver+" chargee");
          } catch (Exception e) {
        	  arret("Impossible de charger le pilote "+driver);
           }
     
      }
     
      // Methode connection BD
      public Connection ConnectionDatabase (String url, String login, String password) {
    	  Connection con = null;
    	  try {
    		  affiche("connection à la base de données : '"+url+"' en cours");
    		  con = DriverManager.getConnection(url,login,password);
    		  affiche("connection à la base de données OK");
    	  } catch (SQLException e) {
              // la connection a la base de données n'a pas pu etre établi
              // voici les codes erreurs retournés 
    		  affiche("SQLException: " + e.getMessage()); 
    		  affiche("SQLState: " + e.getSQLState()); 
    		  affiche("VendorError: " + e.getErrorCode()); 
    		  arret("Connection a la base de données impossible");
    	  }
    	  return con;
      }
      public static void main(String[] args) {
    	  connectionBD ConnectBD = new connectionBD();
          ResultSet résultats = null;
          /* Driver :
    	   * sun.jdbc.odbc.JdbcOdbcDriver
    	   * com.mysql.jdbc.Driver
    	   * org.postgresql.Driver
    	   */
    	  ConnectBD.connectionDriver("com.mysql.jdbc.Driver");  
     
    	  // connexion BD
    	  String database = "test";
    	  Connection connexion = ConnectBD.ConnectionDatabase(
    			  "jdbc:mysql://intranet/"+database,
    			  "root",
    			  ""
    	  );
     
    	  // Listing des bases de données
    	  String requete_listing = "SHOW databases;";
     
          try {
              Statement stmt = connexion.createStatement();
              résultats = stmt.executeQuery(requete_listing);
           } catch (SQLException e) {
              arret("Anomalie lors de l'execution de la requête");
           }
           //parcours des données retournées
           affiche("parcours des données retournées");
           try {
              ResultSetMetaData rsmd = résultats.getMetaData();
              int nbCols = rsmd.getColumnCount();
              boolean encore = résultats.next();
     
              while (encore) {
                 for (int i = 1; i <= nbCols; i++) {
                	 affiche(résultats.getString(i) + " ");
                	 encore = résultats.next();
                 }
              }
              résultats.close();
           } catch (SQLException e) {
              arret(e.getMessage());
           }
      }
     
    }

  13. #13
    Membre confirmé
    Inscrit en
    Août 2007
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 72
    Par défaut
    ça marche chez moi. en plus de permettre à l'utilisateur root de se connecter à partir de n'importe quelle machine, en remplaçant le localhost dans la table user par %, je me suis egalement referé du message de djbril en modifiant le fichier de config de mysql comme ceci:
    et tout marche, j'arrive à me connecter sans pb.
    merci à tous, surtout à djibril pour son dernier tuyo
    à plus

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 93
    Par défaut
    j ai peur de dire un betise mais je croix que l utilisateur root et configurer pour etre utiliser en localhost il faut regarder dans administration ,mysql administration ,privileges et creer un utilisateur avec la commande mysql
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grant all on *.* to 'cequetuveux'@'192.168.100.%'

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connexion à une base MySql distante
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/12/2012, 22h53
  2. Connexion sur une base Mysql distante (non locale)
    Par externa dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/02/2006, 11h34
  3. [Windows] Pouvoir se connecter a une base mysql distante
    Par TEALC dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 08/12/2005, 17h12
  4. [BDD] Erreur dans la connexion à une base MySQL
    Par dodo10 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 24/01/2005, 19h52
  5. [JSP] Connexion à une base mysql
    Par Jovial dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 20/04/2004, 14h04

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