Résolution de l'incompatibilité MySQL PHP
Lors de la tentative de connexion à une base de données MySQL distante à l'aide de PHP 5.3.0, les utilisateurs peuvent rencontrer un problème particulier résultant dans les erreurs liées à la longueur des paquets et à l'ancienne authentification. Cette incompatibilité se produit lors de la connexion à une base de données exécutant MySQL version 5.0.22, alors qu'une connexion à une autre base de données avec la version 5.0.45 réussit.
Dévoilement de la cause profonde
La cause sous-jacente de cette incompatibilité réside dans le mot de passe du compte MySQL. Si le mot de passe est une ancienne chaîne de 16 caractères, l'extension mysqlnd de MySQL ne peut pas l'utiliser pour établir une connexion au serveur MySQL.
Résoudre le problème
Pour Pour remédier à ce problème, deux solutions peuvent être suivies :
Réinitialiser le mot de passe de l'utilisateur :
Vérifier les paramètres du serveur :
Détermination de la longueur du mot de passe
Pour déterminer la longueur du mot de passe de l'utilisateur concerné, exécutez la requête suivante sur le serveur MySQL problématique :
SELECT Length(`Password`), Substring(`Password`, 1, 1) FROM `mysql`.`user` WHERE `user`='username'
Remplacez 'nom d'utilisateur' par le nom d'utilisateur réel utilisé dans la fonction mysql_connect().
Si la requête renvoie une longueur de 16 et que le premier caractère est un '*', elle confirme que le mot de passe est un ancien hachage de 16 caractères. Cela signifie la nécessité de réinitialiser le mot de passe à l'aide de la méthode mentionnée précédemment.
En résolvant le problème du mot de passe obsolète, vous pouvez vous connecter avec succès à la base de données MySQL distante à l'aide de PHP 5.3.0, résolvant ainsi l'incompatibilité rencontrée.
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!