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 :

Accès distant avec JDBC à une BD MYSQL


Sujet :

JDBC Java

  1. #1
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Accès distant avec JDBC à une BD MYSQL
    J'ai une application Java qui utilise une BD MySQL. Actuellement, elle est déployée en interne sur chaque poste utilisateur d'une administration, la base de données elle est stockée sur un serveur LAMP appartenant au même réseau. On souhaite faire partager l'application avec d'autres administrations, en gros ça veut dire que l'on veut que notre bd sql soit accessible de l'extérieur. En fait quand je dis extérieur ça correspond pas vraiment à l'état des choses puisque les établissements en question on leur propre réseau VPN.

    J'ai donc commenté le skip-networking sur le my.conf et j'ai ouvert le port sur le parefeu. A partir d'un site distant, j'arrive bien à accéder à la bd ac phpMyAdmin hébergé sur le serveur web du serveur LAMP et je reçois bien la signature du serveur mysql quand je fais un telnet sur le port 3306. Par contre quand je lance le .jar de l'application, en s'assurant bien que tous les packages requis sont inclus et plus particulièrement les drivers, mon application se bloque sur la procédure d'authentification quand je clique sur le bouton "OK" qui va tester le couple login/Pass à partir de la BD. Donc rien ne se passe, même pas le message d'erreur qui est sensé apparaitre quand le LogiN/pass est faux .

    Je ne vois vraiment pas d'où peut venir l'erreur, vos suggestions sont les bienvenues !

  2. #2
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    Montres la portion de code qui réalise la connexion à la base de données stp. Tu peux également tester en ligne de commande que tu peux te connecter à la base de données distante :
    mysql -u tonclient -p -h ip.hote.de.bd
    IL est probable que l'utilisateur de MySQL ne soit pas configuré pour accepter les connexions externes. Tu peux essayer :
    grant all privileges on tabase.* to tonuser@'%' identified by 'tonpassword'
    phpMyAdmin ne peut pas t'aider pour ton problème. C'est un programme WEB qui se connecte en local à la base.

  3. #3
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Voila entre autres ce que fait la classe qui s'occupe de la connexion :

    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
     
    public class Bdd 
    {
        private Connection conn = null;
        private Statement stmt = null;
        private ResultSet rs = null;
     
        public Bdd() throws SQLException  
        {
            try 
            {
                DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            }
            catch(SQLException e)
            {
                throw e;
            } 
        }
     
        public void connect()  throws SQLException 
        {
          try
          {
           Class.forName("org.gjt.mm.mysql.Driver").newInstance();
         conn = (Connection) DriverManager.getConnection("jdbc:mysql://ip/bd","user","pass");
            }
            catch(Exception e)
            {
                System.out.println("connection : "+e);
            }
        }
     
        public void disconnect() throws SQLException 
        {
            try{            
                conn.close();
            }catch(SQLException e){throw e;} 
        }
    }
    Citation Envoyé par muad'dib Voir le message
    Montres la portion de code qui réalise la connexion à la base de données stp. Tu peux également tester en ligne de commande que tu peux te connecter à la base de données distante :IL est probable que l'utilisateur de MySQL ne soit pas configuré pour accepter les connexions externes. Tu peux essayer :phpMyAdmin ne peut pas t'aider pour ton problème. C'est un programme WEB qui se connecte en local à la base.
    Oui je sais bien que je peux rien conclure avec l'accès que j'ai sur phpMyAdmin, par contre j'en avais profité pour rajouter un utilisateur avec tous les droits à partir de tout hôte (%). Par contre la commande mysql -u user -p -h ip ne marchera pas forcément sur une machine cliente puisqu'il faut qu'un client mysql au moins soit installé dessus !.

  4. #4
    Membre expérimenté
    Avatar de muad'dib
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2003
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 011
    Points : 1 375
    Points
    1 375
    Par défaut
    L'exécution de mysql en ligne de commande sert juste à savoir si tu peux te connecter à cette base de données depuis l'extérieur.
    Pourquoi mets-tu des à tout bout de champs ? Si ta fonction contient la clause ce n'est pas nécessaire et est source d'erreurs. Soit tu laisses la classe appelante gérer l'exception, soit tu la gères dans la fonction.

    De plus le ne devrait être exécuté qu'une seule fois (dans ton constructeur par exemple).

    Autre chose : pourquoi castes-tu en (Connection) ? Tu ne serais pas entrain d'essayer de passer un com.jdbc.mysql.Connection vers un java.sql.Connection par hasard ? Si c'est le cas il vaut mieux que ton objet conn soit instance de la classe java.sql.Connection.

    Fais un test : vires tous les throws SQLException et throw e de ton code. Gères les exceptions dans les fonctions elle-mêmes et vois ce que ça donne.

    Personnellement je n'ai que très peu confiance en phpMyAdmin et je fais habituellement tout en ligne de commande.

  5. #5
    Candidat au Club
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci pour tes remarques, je vais nettoyer tout cela. Heureusement que j'ai les sources ! (en fait l'application c'est un stagiaire qui l'a faite).

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

Discussions similaires

  1. Problème avec && dans une requête mysql
    Par jean christophe dans le forum Bases de données
    Réponses: 4
    Dernier message: 29/04/2010, 14h10
  2. Réponses: 1
    Dernier message: 20/10/2009, 15h50
  3. Accès distant à ma Base de données mysql
    Par kiooik dans le forum Débuter
    Réponses: 4
    Dernier message: 21/06/2009, 13h56
  4. [PHP 5.2] Problème d'accès distant avec fopen et fgets
    Par DanLM dans le forum Langage
    Réponses: 1
    Dernier message: 17/03/2009, 13h12
  5. problème de connection JDBC à une base MySQL
    Par aoshi85 dans le forum JDBC
    Réponses: 2
    Dernier message: 05/02/2009, 18h19

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