"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi est-ce que j'obtiens l'erreur « Paquet OK 6 octets plus court que prévu » lors de la connexion à une base de données MySQL distante avec PHP 5.3.0 ?

Pourquoi est-ce que j'obtiens l'erreur « Paquet OK 6 octets plus court que prévu » lors de la connexion à une base de données MySQL distante avec PHP 5.3.0 ?

Publié le 2024-11-09
Parcourir:317

Why am I getting the \

Incompatibilité MySQL PHP : compréhension de l'erreur de connexion et de la résolution

Rencontre de l'erreur « Paquet OK 6 octets plus court que prévu » lors de la connexion à un Une base de données MySQL distante avec PHP version 5.3.0 peut être un problème déroutant. Pour résoudre ce problème, il est crucial de comprendre la cause sous-jacente et d'appliquer la solution appropriée.

L'erreur indique une incompatibilité entre la version locale de PHP et le serveur MySQL distant. Les versions PHP 5.3.0 et supérieures exigent que les comptes MySQL aient des mots de passe hachés à l'aide du nouveau plugin d'authentification MySQL. Cependant, les anciennes versions de MySQL comme la 5.0.22 peuvent toujours utiliser l'ancienne méthode d'authentification avec des mots de passe à 16 caractères. Cette divergence conduit à l'erreur car PHP 5.3.0 ne parvient pas à interpréter correctement la réponse du serveur MySQL.

Pour résoudre ce problème, il existe deux solutions possibles :

  • Définissez un nouveau mot de passe : Pour le compte rencontrant l'erreur, utilisez un client MySQL pour exécuter la commande "SET PASSWORD FOR 'username'@'hostmask' = PASSWORD('thepassword')" pour générer un nouveau mot de passe haché. Cela mettra à jour le mot de passe du compte avec le nouveau format d'authentification.
  • Configurez le serveur MySQL : Vous pouvez également vérifier si le serveur MySQL est configuré pour utiliser l'ancienne méthode d'authentification par défaut. Si tel est le cas, vous pouvez modifier les paramètres du serveur pour appliquer le nouveau plug-in d'authentification et interdire les anciens mots de passe.

Pour déterminer si le compte utilise un ancien mot de passe à 16 caractères, exécutez la requête :

SELECT
  Length(`Password`),
  Substring(`Password`, 1, 1)
FROM
  `mysql`.`user`
WHERE
  `user`='username'

Sur le serveur problématique 5.0.22, remplacer 'username' par le compte en question. Si le résultat indique une longueur de mot de passe de 16 et que le premier caractère est un chiffre hexadécimal (0-9 ou A-F), cela indique un ancien mot de passe.

En comprenant la cause sous-jacente et en appliquant la solution appropriée, vous pouvez résolvez l'incompatibilité MySQL PHP et établissez une connexion réussie à la base de données distante.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3