Problème de compatibilité MySQL PHP
Lors de la connexion à une base de données MySQL distante à partir d'un serveur WAMP local exécutant PHP 5.3.0, une erreur se produit :
Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected. PID=5880 in ... Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to MySQL 4.1+ using old authentication in ...
Ce problème se manifeste généralement lors de la connexion à une ancienne base de données MySQL (par exemple, version 5.0.22) mais pas à une base de données plus récente (par exemple, version 5.0.45).
Cause :
Le problème survient lorsque le compte MySQL utilisé possède un ancien hachage de mot de passe de 16 caractères.
Solution :
Pour résoudre le problème, réinitialisez le mot de passe du compte problématique afin d'utiliser un format de mot de passe moderne. Exécutez la requête suivante dans un client MySQL :
SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword');
Informations supplémentaires :
Pour vérifier si le hachage du mot de passe est effectivement ancien, exécutez la requête suivante sur l'ancien Serveur MySQL (version 5.0.22) :
SELECT Length(`Password`), Substring(`Password`, 1, 1) FROM `mysql`.`user` WHERE `user`='username';
Si le champ 'Longueur' renvoie 16 et que le champ 'Sous-chaîne' renvoie un caractère '*', le hachage du mot de passe est ancien.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!