Maison  >  Article  >  base de données  >  Pourquoi ma connexion PHP 5.3.0 à une ancienne base de données MySQL échoue-t-elle avec « paquet OK 6 octets plus court que prévu » ?

Pourquoi ma connexion PHP 5.3.0 à une ancienne base de données MySQL échoue-t-elle avec « paquet OK 6 octets plus court que prévu » ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 21:30:03674parcourir

Why Does My PHP 5.3.0 Connection to an Older MySQL Database Fail with

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn