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 :

eclipse ne se connect pas a Mysql


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par défaut eclipse ne se connect pas a Mysql
    Bonjour,
    Je travaille en full opensource, os : Debian 8.8, Eclipse oxygene, Tomcat 8.0, Mysql 5.7.20, MySql Workbench 6.2.
    Je développe une application java EE, avec la base Mysql et tomcat. Je me suis rendu compte que la connexion avec mysql ne fonctionne pas.
    Je développe aussi en PHP5/CCS3 == ici tout marche bien, j'ai accès à mes tables ! Et bien sûr, MySql Workbench marche très bien !
    J'utilise le dernier connecteur : mysql-connector-java-5.1.45-bin.jar dans le lib de web-inf de Eclipse.
    Lorsque j'essaie de paramétrer ma base de données, le ping répond "failed" !
    Voici mes paramètres :
    1. database : javaee
    2. URL : jdbc:mysql://localhost:3306/javaee
    3. user et password bien remplit.
    4. (facultatif) en java EE mes tables etc....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
          // Chargement du driver
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
            }
     
            try {
                connexion = DriverManager.getConnection("jdbc:mysql://localhost:3306/javaee", "root", "toto");
            } catch (SQLException e) {
                e.printStackTrace();
            }
    Ca ne marche pas. Au début je croyais que c'était mes programmes qui ne marchent pas mais non, la connexion est refusée !
    Message erreur d'eclipse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Could not connect to New MySQL.
    Error creating SQL Model Connection connection to New MySQL. (Error: Access denied for user 'root'@'localhost' (using password: YES))
    Access denied for user 'root'@'localhost' (using password: YES)
    Error creating JDBC Connection connection to New MySQL. (Error: Access denied for user 'root'@'localhost' (using password: YES))
    Access denied for user 'root'@'localhost' (using password: YES)
    Salutation,
    Philippe

  2. #2
    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
    De mémoire, c'est un problème lié aux autorisations dans MySQL.
    Il me semble qu'il fallait une entrée "root"@"%" dans "Users and Privileges"
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut
    Bonjour,
    Je ne voudrai pas vous lancer sur une fausse piste, mais il me semble que par défaut, le serveur MySQL Linux est configuré pour écouter la boucle locale 127.0.0.1. Si vous n'avez pas modifier cela au niveau de votre serveur, et qu'au niveau de votre code vous tentez la connexion en locale vers l'adresse IP, la connexion sera refusée. C'est une sécurité qui par défaut limite les connexions au serveur qu'en pure locale, inaccessible depuis le réseau via l'utilisation de la boucle locale. De souvenir, il est préférable de modifier la configuration du serveur et de lui demander d'écouter l'adresse IP locale de la machine au lieu de la boucle locale.
    Mais c'est juste une idée...
    Pour ce qui est de la reconnaissance de l'utilisateur, à l'installation un utilisateur root est automatiquement créé avec la possibilité de se connecter depuis n'importe où, donc, avec le user root et le bon mot de passe, si la configuration serveur est bonne, il n'y a aucune raison qui expliquerai un refus de connexion...
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  4. #4
    Membre éclairé Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par défaut
    D'après mes recherches il faut créer un "pool" pour MySql et créer un fichier server.xml à renseigner dans le web-inf, voici mon fichier server.xml (il y a beaucoup d'erreur mais c'est un début) :

    server.xml
    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
    <server>
    <GlobalNamingResources>
    Resources name="jdbc/Gobaljavaee"
    Type="javax.sql.DataSource"
    auth="Container"
    driverClassName="com.mysql.jdbc.driver"
    url="jdbc:mysql://localhost:/javaee"
    username="root" password="toto"
    </GlobalNamingResources>
    <service>
    <Engine>
    <Host>
    <ResouceLink name="jdbc/javaee"
    global="jdbc/Globaljavaee"
    type="javax.sql.DataSource" />
    </Host>
    </Engine>
    </service>
    </server>
    Si vous avez des idées elles seront bienvenues !

    Salutations
    philippe

  5. #5
    Membre éclairé Avatar de philo71
    Profil pro
    Account manager
    Inscrit en
    Avril 2005
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Account manager

    Informations forums :
    Inscription : Avril 2005
    Messages : 242
    Par défaut
    Je me suis trompé !
    En effet le server.xml est dédié à tomcat, j'ai fait une erreur !
    J'ai choisi parmi les conseils de faire un serveur indépendant.
    Je dois juste faire une implémentation du fichier web.xml et décrire la balise "contexte".
    Mais cela étant dit, je manque des informations que vous devez savoir à partir d'une configuration de maven,
    il y a quelques erreurs dans ma description, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <Context path="/root/eclipse-workspace/boticiel" // here error
        docBase="/root/eclipse-workspace/boticiel"
        debug="0" privileged="true">
        <Resource name="jdbc/javaee" auth="Container"
            type="javax.sql.DataSource" maxActive="100" maxIdle="30"
            maxWait="10000" username="jts" password="secret"
            driverClassName="org.mysql.Driver"
            url="jdbc:mysql://javaee.localhost/boticiel"/>
    </Context>
    Ma base de données est javaee
    le nom de mon projet est "boticiel"
    je travaille dans l'hôte local
    Dois-je remplir le mot de passe par le vrai ou laisser "secret" ?

  6. #6
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut
    Je crois que j'ai la réponse à votre question.
    Je viens de faire quelques tests sur mon serveur Debian, j'obtiens la même erreur que vous en exécutant le code suivant avec pour paramètre "localhost" :

    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
    Code exemple :
    package testsdeveloppezpointnet;
     
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
     
    /**
     *
     * @author yotta
     */
    public class testDeveloppezPointNet {
     
        static Statement reqTest;
        static java.sql.Connection connexion;
     
        @SuppressWarnings("CallToPrintStackTrace")
        public testDeveloppezPointNet(String param) {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connexion = DriverManager.getConnection("jdbc:mysql://" + param + ":3306/test", "root", "toto");// Remplacez test par le nom de votre base.
            }
        catch (ClassNotFoundException | SQLException e) {
                e.printStackTrace();
            }
        }
     
        public static void main(String args[]) throws Exception {
            testDeveloppezPointNet testeur = new testDeveloppezPointNet(args[0]);
            reqTest = connexion.createStatement();
            ResultSet reponse = reqTest.executeQuery("SELECT Nom, Fournisseur FROM Marque ORDER BY Nom");// Adaptez bien sûr cette requête à votre environnement.
            reponse.beforeFirst();
            while (reponse.next()) System.out.println(reponse.getString(1) + " | " + reponse.getString(2));
            reqTest.close();
            connexion.close();
            }
    }
    Par contre, si j'exécute ce code avec pour paramètre, l'adresse ip du serveur, alors cela fonctionne parfaitement.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  7. #7
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut
    Désolé, j'ai été un peu rapide...
    En fait, mon serveur MySQL est configuré avec bind_address sur l'adresse IP du serveur, c'est pour cela que ça fonctionne avec l'IP et pas localhost ni 127.0.0.1. Si je modifie la configuration de mon serveur pour le faire écouter localhost, alors mon petit programme de test fonctionne tout aussi bien avec localhost pour paramètre. Mais la connexion s'établie, la requête est soumise et la réponse renvoyée sans erreur.
    Cependant, ce que je peux confirmer qui pourrait apporter de l'eau à votre moulin, c'est que de mon côté, je n'ai jamais eu à créer de fichier xml ou à bricoler une configuration manuelle autre que bind_address dans la configuration de mon serveur MySQL. Et ce test a été fait sur une Debian 8 (Debian 3.16.51-3 (2017-12-13) x86_64), avec Java(TM) SE Runtime Environment (build 1.8.0_151-b12) 64 bits, et MySQL 5.5.58-0+deb8u1-log - (Debian) via UNIX Socket. Dernière précision, j'utilise le Driver Jdbc mysql-connector-java-5.1.23-bin.jar

    Maintenant, comme vous dites avoir testé vos connexion via Tomcat avec php, il y a peut-être un conflit. Comme vous faites tout sur la même machine, avez-vous essayé de vous connecter à MySQL depuis Java après avoir arrêté Tomcat ?
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par yotta Voir le message
    Bonjour,
    Je ne voudrai pas vous lancer sur une fausse piste, mais il me semble que par défaut, le serveur MySQL Linux est configuré pour écouter la boucle locale 127.0.0.1.
    Par défaut, sous linux, il me semble qu'il n'autorise le root que sur la socket filesystem, pas sur le réseau (même 127.0.0.1). Il faut donc donner les autorisation à l'utilisateur. D'ailleurs, il vaut mieux passer par un utilisateur dédié à ton application plutot que d'utiliser le compte root.


    Citation Envoyé par sql
    CREATE USER 'myapp'@'localhost' IDENTIFIED BY 'mypassword';
    GRANT ALL ON mydatabase.* TO 'myapp'@'localhost';

  9. #9
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut
    Bonjour,
    C'est une bonne déduction et un excellent conseil tchize_, mais malheureusement comme le dit philo71 au début de ce post :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Je développe aussi en PHP5/CCS3 == ici tout mache bien j'ai acces a mes tables ! et biensur MySql Workbench marche très bien !
    Ce qui sous-entend que ce n'est pas un problème d'identifiant.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/10/2007, 14h40
  2. [Kylix 3] Je n'arrive pas à utiliser MySQL
    Par usebob dans le forum EDI
    Réponses: 4
    Dernier message: 15/04/2005, 10h18
  3. [Tomcat] [Eclipse] : Servlet n'est pas disponible
    Par mmed dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 13/01/2005, 11h44
  4. [CR10] Se connecter à une base MySQL
    Par maborou dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 04/01/2005, 13h53
  5. Mysql ERROR 2002: Can't connect to local MySQL
    Par Michel dans le forum Réseau
    Réponses: 2
    Dernier message: 17/01/2004, 18h35

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