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?

Fernando
la source
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.

mulaz
la source
9
ALTER USER 'mysqlUsername'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysqlUsernamePassword';
Robin Qiu
la source
Cette réponse a résolu ce problème pour moi serverfault.com/questions/295285/…
Vishrant
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! ;)

petru
la source
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.

Clain Dsilva
la source
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.

jedi34567
la source