Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/09/2006, 08h33   #1
Membre éclairé

 
Avatar de Pierre Maurette
 
Pierre Maurette
Inscription : juillet 2002
Messages : 267
Détails du profil
Informations personnelles :
Nom : Pierre Maurette
Âge : 56

Informations forums :
Inscription : juillet 2002
Messages : 267
Points : 316
Points : 316
Par défaut mysql_real_connect() et mot de passe

Bonjour,

J'essaie de faire fonctionner un accés à MySQL local à partir de Turbo C++ Explorer (équivalent C++ light de Borland Developper Studio 2006). J'ai deux approches, chacune aboutissant à un souci.
Voici le premier:
J'utilise l'API mySQL conformément au tuto:
http://lfe.developpez.com/BCBmySQL/
Tout fonctionne, si ce n'est qu'il m'est impossible de me connecter si mySQL est affublé d'un mot de passe non vide.
Si j'appelle mysql_real_connect() avec un mauvais mot de passe, ou pas de mot de passe s'il en faut un, j'ai un message correspondant à ce que j'attends. Si j'appelle avec "" et que je n'ai pas de mot de passe mySQL, je me connecte. En revanche, avec le bon mot de passe (non vide), j'ai un "Bad handshake" ou "Mauvais 'handshake'" selon la version de mySQL.
Ce n'est pas bloquant (je peux bosser sans mot de passe), mais j'aimerais bien comprendre et résoudre cette curiosité.
Il semble (Google) que je ne suis pas seul à avoir ce problème, mais personne ne propose de solution, dans une langue compréhensible par moi en tout cas. Une suggestion ?
Merci d'avance, et bonne journée.
Pierre Maurette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 09h37   #2
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Salut,

Il sagit sûrement d'une incompatibilité de version entre ton serveur MySQL et libmysql.dll sur ton poste.
A partir de MySQL 4.1, le protocole d'authentification au serveur a changé. Il faut soit utiliser une version plus récente de libmysql.dll soit réencoder tes mots de passe dans la table mysql.user en utilisant OLD_PASSWORD().

Cf http://dev.mysql.com/doc/refman/4.1/en/old-client.html
__________________
Pensez au bouton
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/09/2006, 11h10   #3
Membre éclairé

 
Avatar de Pierre Maurette
 
Pierre Maurette
Inscription : juillet 2002
Messages : 267
Détails du profil
Informations personnelles :
Nom : Pierre Maurette
Âge : 56

Informations forums :
Inscription : juillet 2002
Messages : 267
Points : 316
Points : 316
Merci, c'était bien ça.

En fait, je m'étais un peu mélangé les crayons avec la bibliothèque d'importation libmysql.lib et le hasard avait fait qu'un libmysql.dll un peu défraîchi traînait certainement dans le path.

Il semble que la version la plus récente (livrée avec mySQL 5) fonctionne également vers un serveur en version 4 (en tout cas 4.1).

En revanche, ça ne change rien au problème évoqué dans mon autre post. J'y croyais un peu, puisque c'était la même DLL qui était enregistrée.

Merci encore, et bonne journée.

Pierre Maurette
Pierre Maurette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/07/2007, 14h00   #4
Invité de passage
 
Inscription : décembre 2005
Messages : 13
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 13
Points : 4
Points : 4
Par défaut Problème similaire

Bonjour,
Je rencontre un pb similaire.
Avec VB6.
Dans une version précédente de mon code j'utilisais la librairie dll (real_connect etc). J'ai besoin de connecter un superutilisateur virtuel afin de permettre à des visiteurs de s'enregistrer avec leur login et mdp. Ce compte virtuel me permet d'avoir momentanément les droits suffisants pour effectuer des créations d'utilisateurs.
le login et le mdp de ce compte virtuel sont transmis dans le code. (compte créé à l'origine par le code également avec des droits idoines sur "mysql")

Depuis que j'utilise l'API J'obtiens un msg "mauvais Handshake" quand je veux connecter mon compte virtuel (robot) dans le code.
Erreur 1043 :

Citation:
Mauvais 'handshake'
Le pire c'est que ça fonctionne sur mon PC perso (Windows XP, Mysql 4.1.9, libmysql.dll du 02/06/2004, easyphp1.8) et pas au bureau (Windows 2000, Mysql 4.1.9, libmysql.dll du 02/06/2004, easyphp1.8).

Tous les autres comptes fonctionnent : root ou utilisateur lambda créé par mon appli ou directement avec phpadmin.

Citation:
mysql.OpenConnection My_Host, "robot", "robot8%%£{123", "mysql", My_port, My_option
J'ai tenté d'élargir les droits du robot, rien n'y fait.
J'ai changé la version de la dll, j'en avais une de 2005. Ca passe pas non plus mais l'erreur change 1045 au lieu de 1043.
Citation:
Accès refusé pour l'utilisateur: 'robot'@'@localhost' (mot de passe: OUI)
????? Comprends rien !!

Merci
Alainpe est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h57.


 
 
 
 
Partenaires

Hébergement Web