mysql_connect (): Le serveur a demandé une méthode d'authentification inconnue du client [mysql_old_password] dans


8

J'essaie d'exécuter PHP 5.4.1 (compilé à partir des sources) mais quand j'essaye de me connecter sur mysql j'obtiens:

Warning: mysql_connect(): The server requested authentication method unknown to the client [mysql_old_password] in

Lorsque vous utilisez PHP 5.3 / 5.2, cela fonctionne normalement. Des idées sur la cause de ce problème?


Voir cette réponse dans une autre question: stackoverflow.com/a/50776838/1041047
Robin Qiu

Réponses:


10

Essayez de lire ceci: lien

MySQL a introduit des hachages de mot de passe plus longs dans (je pense) la version 4.1, et votre serveur les utilise probablement encore (vérifiez les hachages de mot de passe de 16 octets dans votre table utilisateur mysql). Les versions plus récentes utilisent des hachages de mot de passe plus longs. Votre serveur prend en charge les deux, mais votre client (php) semble ne prendre en charge que les nouveaux dans cette version (et sur).

Si c'est possible, utilisez la solution du lien dans la première ligne et définissez à nouveau votre mot de passe avec le nouveau hachage, mais attention, si vous utilisez d'autres (anciens) clients qui reposent sur d'anciens mots de passe, la compatibilité risque de se casser. Essayez également de rechercher la prise en charge de l'ancien mot de passe pour MySQL en PHP, mais je n'en suis pas sûr.



3

Je sais que c'est un vieux sujet, mais j'ai travaillé autour du problème, sans avoir à mettre à niveau / rétrograder quoi que ce soit. Fondamentalement, j'ai commenté la ligne old_passwords = 1 dans mon fichier my.cnf, redémarré mysql, ajouté / modifié l'utilisateur qui a finalement obtenu le hachage de 16 octets, puis je suis retourné et décommenté la ligne old_passwords = 1, et redémarré mysql. Donc en gros:

  • comment old_passwords = 1
  • redémarrer mysql
  • ajouter / modifier un utilisateur
  • décommenter old_passwords = 1
  • redémarrer mysql

Donc, vous l'avez: 1 utilisateur utilisant un nouveau type de mot de passe, tandis que d'autres utilisateurs ont leurs anciens types de mot de passe. Et tout le monde peut se connecter! ;)


1

Plusieurs fois, cela peut se produire si votre serveur MYSQL utilise un ancien hachage de mot de passe , modifiez le mot de passe Ou mettez à niveau le serveur pour obtenir le dernier hachage de mot de passe qui résout le problème d'authentification.


1
Je viens de changer à nouveau le mot de passe de l'utilisateur db, en supposant que MySql utiliserait le nouveau hachage. Ça a marché. Aucun autre changement n'était nécessaire.
eyal_katz

0

J'ai reçu un message similaire lors de la mise à niveau de mon installation mediawiki. J'utilise Netfirms comme fournisseur d'hébergement et j'ai résolu cela en me connectant au panneau de contrôle, en allant dans la zone MySQL et en changeant la base de données que mediawiki utilisait. J'ai ensuite pu procéder à la mise à niveau de mediawiki.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.