9
votes

Impossible de créer Poolableconnectionfactory (accès refusé pour l'utilisateur '' @ 'localhost'

J'ai essayé de configurer un DatabaseconnectionPool pour une application Web pour les deux derniers jours sans succès. J'ai lu les sections pertinentes des docs Tomcat et beaucoup de choses autour du sujet et je pense que je fais tout ce qui va bien, mais évidemment pas parce que je continue à obtenir l'erreur suivante: xxx pré>

i 'M ne saisis pas l'erreur lorsque je commence à courir tomcat, mais lorsque j'essaie d'exécuter le servlet suivant: p> xxx pré>

Le contexte du WebApp est: p>

<?xml version='1.0' encoding='utf-8'?>
<Context>

    <!-- Configure a JDBC DataSource for the user database -->
 <Resource name="jdbc/twittersearchdb" 
           type="javax.sql.DataSource" 
     auth="Container" 
     user="root" 
     password="mypwd" 
     driverClassName="com.mysql.jdbc.Driver" 
     url="jdbc:mysql://localhost:3306/twitter" 
     maxActive="8" 
     maxIdle="4"/>


</Context>


0 commentaires

3 Réponses :


14
votes

Votre configuration a l'air bien. Ceci semble purement un problème d'autorisations.

Vous devez accorder cet accès à l'utilisateur dans MySQL. Alors que Java se connecte à Localhost, il le fera en utilisant TCP / IP - Cependant, dans MySQL Localhost et 127.0.0.1 ont une signification différente. L'émission de ce SQL devrait faire le tour. xxx

qui suppose que Java résout "localhost" à 127.0.0.1, si les choses ne fonctionnent toujours pas, vous pouvez essayer de changer votre chaîne de connexion. à "JDBC: MySQL: //127.0.0.1: 3306 / Twitter"

devrais-je avoir ceci dans mon contexte.xml ou juste le mot de passe normal?

Comme vous l'avez maintenant, le mot de passe en plainte.


4 commentaires

Bonjour Nos, merci pour votre réponse. J'ai joué avec la subvention à toutes déclaration que vous avez fournie. Pour une raison quelconque, la seule chose qui fonctionne, c'est quand je;


Accordez tout sur Twitter. * À '' @ 'localhost' identifié par 'mypwd';


J'ai supprimé l'utilisateur root afin que le seul utilisateur soit '' @ 'localhost' et cela fonctionne. Pendant que je suis heureux que cela fonctionne, quelque chose n'est toujours pas correct car j'ai spécifié dans mes applications context.xml que l'utilisateur est "root" donc je me demande pourquoi "" fonctionnera et en fait le message d'erreur que j'étais Obtenir Beforee refuse toujours l'accès à '' @ 'localhost' et non 'root' @ 'localhost'. Avez-vous une idée pourquoi cela pourrait être le cas?


@Joe Avez-vous découvert pourquoi le nom d'utilisateur n'est pas utilisé dans le message d'erreur? Je veux essayer la commande subvention mais je ne veux pas supprimer l'utilisateur root ou quelque chose comme ça ..



4
votes

dans votre contexte de configuration.xml pour le webapp, vous devez modifier l'utilisateur = "root" par nom d'utilisateur = "root"


0 commentaires

0
votes

Dans mon cas (MySQL V.5.7) J'ai reçu cette erreur en raison de la création de l'utilisateur via la commande subvention: xxx

à l'aide de la commande Créer la commande, résolue l'erreur ci-dessus: xxx

espère que ça va aider quelqu'un


0 commentaires