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

  1. #1
    Membre régulier 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
    Points : 78
    Points
    78
    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 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    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 expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    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 régulier 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
    Points : 78
    Points
    78
    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 régulier 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
    Points : 78
    Points
    78
    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 expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    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 expérimenté
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 088
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    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
    Membre régulier 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
    Points : 78
    Points
    78
    Par défaut
    bonjour yotta,
    j'ai changer de server d'application et passer a Tomcat 9.2, j'essaie un peu tout !
    j'ai vérifié mon Bind dans le fichier de configuration du serveur Mysql, il pointe sur 127.0.0.1 soit local host.
    je n'arrive toujour pas a me connecter ! voici mon méthode de chargement du driver jdbc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void loadDatabase() {
            // Chargement du driver
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) { // il me semble qu"ici je passer par une class PDO en PHP 5.x
            }
     
            try {
                connexion = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javaee", "root", "toto");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    d'aprés ce que tu dit de ton test c'est qu'il n"y a pas de paramétrage XML.
    J' ai stopé mon serveur APACHE2 en cas de conflit !
    est ce que tu as comme moi les même imports SQL que moi ou il en manque.
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.PreparedStatement;
    import java.util.ArrayList;
    import java.util.List;
    Dans ton code tu supprime l'exception du (try catch) pour charger le driver MySQL.
    je pense que l'erreur est dans la déclaration du driver JDBC car en PHP 5.x je fesait du PDO.


    Salutations
    philippe

    PS : vous etes nombreux a développer en JEE sous Microsoft Windows, je ne travail plus sous MS Windows trops de problèmes de virus ou autre instabilitées.

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

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Bonjour Philo71,
    Mon petit programme fait totalement abstraction du serveur Web, qu'il soit Apache ou Tomcat. J'ai écrit ça en cinq minutes, 10 pour le tester, il établit simplement une connexion avec une base de donnée et liste le contenu d'une table pour confirmer la réussite de la connexion et de son exploitation, c'est tout. Donc, je lève uniquement les exceptions qui nous intéressent, je ne voyais pas l’intérêt ici de pister une erreur sur l'exécution d'une requête. Pour ce qui est des imports, tout est dans le code. Si vous avez le temps, faites l'expérience sur une petite machine virtuelle typé L.A.M.P., ajoutez Java et faites le test. Une petite base de test avec une table de 3 champs et 4 enregistrements, et vous testez. Normalement, en tous cas cela a toujours été le cas pour moi, ça fonctionne sans qu'il n'y ait à modifier la moindre configuration, du moins en local. En dehors de cela, en terme de serveur Web, si toutefois cela à une influence, il y a une différence. De mon côté j'utilise Apache2, et vous Tomcat. Mais je persiste, je ne comprends pas le rapport avec le soucis de connexion à MySQL depuis du code Java ?! A moins que vous n'utilisiez une technique propre à Tomcat qui serait mal configurée, je ne vois pas. Mais là, je ne peux pas trop m'avancer, je ne connais pas du tout Tomcat si ce n'est de nom. La seule chose qui permettrait déjà de bien localiser le problème serait de faire ce test. Copiez/Collez mon code dans votre éditeur préféré, adaptez-le, enregistrez-le en .java puis compilé-le. Il doit pouvoir s'exécuter en ligne de commande et afficher le résultat de la requête test, sinon, alors il y a bien un problème entre Java et MySQL. Si par contre il fonctionne, c'est que votre soucis se situe entre Tomcat et Java, puisque si je ne me trompes pas Tomcat est une déclinaison d'Apache qui supporte nativement l'exécution de code Java. Dans un contexte servlet ou équivalent, le serveur Web a de l'influence sur l'exécution du code. Dans ce cas, il faut regardé du côté déploiement, mais là, pareil, ce sont des techniques que je ne maîtrise pas, je ne vous serai pas d'une grande aide. Mais ça sent bon le soucis de configuration...
    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/

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

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Petite précision, je viens de refaire le test de mon côté en utilisant la même version de driver que vous (mysql-connector-java-5.1.45-bin.jar), même résultat. Si je fais bien écouter localhost à mon serveur MySQL, et que je lance mon code avec en paramètre localhost ou 127.0.0.1, ça fonctionne, j'obtiens bien la réponse à ma requête SQL...
    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/

  11. #11
    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 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';

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

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    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/

  13. #13
    Membre régulier 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
    Points : 78
    Points
    78
    Par défaut
    bonjour,
    j'ai fait quelques test sous Debian 9.1 avec MariaDB pour base de données, je suis en full 64 bit.
    >> j'obtiens la même erreur, d'ou il est nécéssaire de créer un pool de connection.
    voila ce que j'ai ajouté dans le Web.XML :*

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      <Context path="localhost.localdomain" // ici j'ai une erreur
        docBase="127.0.0.1/boticiel"
        debug="0" privileged="true">
        <Resource name="jdbc/javaee" auth="Container"
            type="javax.sql.DataSource" maxActive="100" maxIdle="30"
            maxWait="10000" username="root" password="toto"
            driverClassName="org.mysql.Driver"
            url="jdbc.127.0.0.1://javaee"/>
    </Context>
    Deplus je doit ajouter ce code mais je ne vois pas ou l'ajouter !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Context initContext = new InitialContext();
    Context envContext  = (Context)initContext.lookup("java:/comp/env");
    DataSource ds = (DataSource)envContext.lookup("jdbc/javaee"); // Or whatever JNDI name you defined in Context
    Connection conn = ds.getConnection();
    // Do stuff
     
     // IMPORTANT!!! // here I understand that you have to close the connection
    conn.close();
    voici la méthode que j'utilise pour ouvrir la connection a ma base de donnée MySql

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
       private void loadDatabase() {
            // Chargement du driver
            try {
                Class.forName("com.mysql.jdbc.Driver");
            } catch (ClassNotFoundException e) {
            }
     
            try {
                connexion = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/javaee", "root", "toto");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    on m'as indiqué de retirer le try..catch lors du chargement du driver, mais cela entraine beaucoup erreurs...

    Je ne sais pas comment vous hébergez vos site javaEE j'espère pas sous windows, trop facile a hacker !

    Salutations
    philippe

  14. #14
    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,
    chez moi, j´ai eu le meme resultat,
    il m´a fallu faire ceci :
    creer l´utilisateur root comme ceci :

    user Host
    ------------------
    root %
    root 127.0.0.1
    root localhost
    root mon adresse ip

    sans cela rien ne marchait chez moi.

    Eric

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

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Bonsoir,
    Tout cela est très troublant.
    Je viens de faire quelques modifications de mon côté et de refaire quelques tests, et voilà ce que ça donne.
    Sans rentrer dans les détails de version que l'on a déjà partagés dans cette discussion, mon environnement système de test est un serveur Debian 8. Sur ce dernier, lorsque je l'ai monté il y a maintenant quelques années, j'ai installé LAMP. J'ai donc Apache2, MySQL 5, php7 sur cette machine. J'ai aussi ajouté phpmyadmin. J'ai aussi installé un environnement graphique sur cette Debian, un Gnome 3 et posé une Jre Java 1.8 ainsi qu'un NetBeans dernière version en Java SE 1.8.
    Voilà comment est défini mon utilisateur root MySQL pour le test :

    Nom : VisuUserRoot.JPG
Affichages : 2199
Taille : 37,1 Ko

    Comme vous pouvez le constater, ce dernier ne peut être utilisé que localement. Aucune définition d'usage délocalisé "%" ni d'adresse IP ni de nom.
    Mon serveur MySQL est configuré pour écouter 127.0.0.1 pour le test.
    Seules différences avec vos installations, j'utilise Java SE et non EE, et il n'y a pas Tomcat sur ma machine. Bien qu'en l'occurrence, même si je me répète, je ne vois toujours pas le rapport entre la connexion MySQL depuis Java et le serveur Web quel qu'il soit ?!
    J'ai modifié mon petit bout de code car à l'origine, je ne me connectais pas root mais autrement. J'ai donc mis en place l'identité root sur 127.0.0.1 avec le mot de passe qui va bien, puis j'ai recompilé le code. J'ai copié le résultat sur mon serveur Debian, et dans une fenêtre Shell, j'ai exécuté mon petit bout de code avec pour paramètre 127.0.0.1, et ça fonctionne très bien...

    De toute façon, il y a trop d'incohérence pour que la solution soit de donner la possibilité à root de se connecter de n'importe où. C'est seulement imprudent.
    En effet, pourquoi attribuer un usage délocalisé "%" à un utilisateur sur un serveur qui n'écoute que sa boucle locale 127.0.0.1, de toute façon, aucune machine du réseau ne pourra s'y connecter, donc quel intérêt y aurait il à attribuer cette délocalisation ?!
    Et comme le prouve le cliché ci-dessus, c'est inutile.
    Pour résumer, si la problématique ici est bien de se connecter à un serveur MySQL localement en tant que root depuis Java via le driver mentionné, je confirme qu'il n'y a normalement pas de soucis, du moins sans Tomcat et avec Java SE. Donc, cela ne peut être lié à mon sens qu'à trois choses, soit une différence à ce niveau entre Java SE et Java EE, soit au niveau de la configuration de Tomcat, soit des deux. Personnellement, je pencherai plutôt pour un problème de configuration de Tomcat. En d'autre terme, un problème qui trouverait plus facilement solution sur le Forum dédié à Tomcat puisqu'il ne s'agirait plus d'un problème lié au langage Java.

    Pouvez-vous me dire si vous avez essayé mon petit bout de code ?

    Et si je puis me permettre, jeffray03, vous ne devriez pas autoriser root à se connecter depuis n'importe où, c'est à mon sens imprudent.
    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/

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

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 088
    Points : 1 540
    Points
    1 540
    Par défaut
    Alors, qu'en est-il ?
    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