mon application c# codée avec VS 2012 (avec MySql.Data.dll) doit se connecter à une bdd MySql sur Wamp 3.0.6 mais j'obtiens systématiquement cette erreur :
"Authentication to host '127.0.0.1' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'localhost' (using password: NO)"
J'ai eu beau essayer avec différents utilisateurs qui ont les privilèges, les deux type de mot de passe, et je peux me connecter par l'interface phpMyAdmin, mais avec l'appli en c# ça ne passe pas.
Je pense que le problème vient de l'autentification, car vu le message la connexion au serveur semble Ok.
J'ai cherché sur le net, j'ai visionné des tutos qui m'ont fait modifier plusieurs fichiers de conf apache en mettant "Allow from all", mais ça n'a rien changé.
Voici le code en résumé :
Alors root est localhost mais les autres users que j'ai testé ont % pour certains, donc à priori ça ne vient pas de là.
Pour ce que tu me recommande de faire ensuite, peux tu être plus précis s'il te plait, comment dois je modifier précisément my.ini ?
;skip-networking
; Disable Federated by default skip-federated
et bind-address?
par ailleurs, si ça peut aider à résoudre le problème :
je dois aussi me connecter à cette même base de données par l'intermédiaire d'un site web php et voici ce que j'obtiens avec chrome :
( ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO)' in C:\wamp64\www\...etc on line 30 ( ! ) PDOException: SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) in C:\wamp64\www\...etc on line 30
par ailleurs, si ça peut aider à résoudre le problème :
je dois aussi me connecter à cette même base de données par l'intermédiaire d'un site web php
Le site web se trouve sur le même serveur ?
As tu essayé avec autre chose que ROOT ?
Quel est le code de connexion que tu as utilisé ?
Le user (autre que root) que tu as/vas essayer ... a-til les droits sur le base ?
Avant tout... peux tu vérifier que le USER mysql que tu utilises (ici "root" ) ait bien l'autorisation de se connecter depuis n'importe (%) où (et pas seulement depuis le localhost (le pc qui héberges mysql))
Il est d'ailleurs conseillé de créer un USER spécifique pour ton application au lieu d'utiliser le "root".
Ensuite vérifie les options skip-networking et bind-address
L'option skip-networking du serveur est activée (au démarrage ou dans le fichier de configuration my.ini/my.cnf) et empêche les connexions TCP/IP venant de l'extérieur.
Désactivez également l'option bind-address 127.0.0.1.
private function __construct() { PdoGsb::$monPdo = new PDO(PdoGsb::$serveur.';'.PdoGsb::$bdd, PdoGsb::$user, PdoGsb::$mdp); PdoGsb::$monPdo->query("SET CHARACTER SET utf8"); }
public function _destruct() { PdoGsb::$monPdo = null; }
public static function getPdoGsb() { if(PdoGsb::$monPdoGsb==null) { PdoGsb::$monPdoGsb= new PdoGsb(); } return PdoGsb::$monPdoGsb; } }
ce qui m'étonne c'est que nous dis que tu parviens à accéder à phpmyadmin...
Donc si la connexion (depuis ta page web commençons par là...) ne fonctionne pas c'est que tu as une erreur :
- Soit dans le login/password
- Soit un problème de droits (qui ne semble pas être le cas vu que tu accèdes à phpmyadmin...)
- Soit dans le nom de la bdd (attention à bien respecter majuscules et minuscules )
Tu peux éventuellement essayer de changer dans ta variable $serveur le "localhost" par l'ip : 127.0.0.1
Bien etendu, toute modifications apportée aux fichiers apache ou mysql ( comme le php.ini) nécessite systématiquement un reboot des services ... Tu as bien arrêté puis relancé les services de ton wamp ?
-oui j'ai pourtant relancé
-les identifiants/passwords sont corrects
-j'ai remplacé par l'ip mais ça ne change rien comme pour l'appli c#
j'ai de l'expérience avec le couple VB.net / SQL Server où je savais faire, mais là avec Wamp MySql je débute
sans trop savoir je dirais que le problème se situe dans les config du serveur par rapport aux connexions "tierces" (locales ou non), mais je ne sais pas quoi modifier précisément
En général je créé le même user deux fois.
Une fois en '%' et une fois en 'localhost'.
Ce qui me gène .. c'est que ton user ne fonctionne même pas en PDO depuis ta page web..... (pourtant hébergée sur le même serveur...).
Tu n'as pas modifié le port mysql à utiliser pour la connexion ? "3306" ?
3306.. c'est le port par défaut utilisé par la bdd mysql pour se connecter .... (comme le port 80 est le port utilisé par défaut par apache pour les sites web ...).
Donc il faut que ton serveur soit configuré sur le même port que celui que tu utilises pour le contacter depuis tes "applications". (ou inversement.... )
tout fonctionne ! !
c'était bien le port qu'il fallait spécifier dans toutes les chaines de connexion vu que je l'avais changé. maintenant l'appli c# et le site web php parviennent à se connecter à la base de données !
merci beaucoup de ton aide !
après il ne vaut pas mieux que j'essaye de revenir "à la normale" pour les ports à l'occasion?
le port 80 est occupé par Microsoft IIS 7.5
le port 3306 par MySQL
Non tu peux laisser comme ça.
Le tout c'est d'avoir le port "configurable" dans tes applis au même titre que le user ou le host ....
Comme ça tu pourras l'installer n'importe où.
Le site web se trouve sur le même serveur ?
As tu essayé avec autre chose que ROOT ?
Quel est le code de connexion que tu as utilisé ?
Le user (autre que root) que tu as/vas essayer ... a-til les droits sur le base ?