Mysql
 sql >> Base de données >  >> RDS >> Mysql

Erreur :mysqlnd ne peut pas se connecter à MySQL 4.1+ en utilisant l'ancienne authentification non sécurisée

  • Supprimer ou commenter old_passwords =1 dans my.cnf

Redémarrez MySQL. Si vous ne le faites pas, MySQL continuera à utiliser l'ancien format de mot de passe, ce qui signifie que vous ne pouvez pas mettre à jour les mots de passe à l'aide de la fonction de hachage PASSWORD() intégrée.

Les anciens hachages de mot de passe sont de 16 caractères, les nouveaux sont de 41 caractères.

  • Connectez-vous à la base de données et exécutez la requête suivante :

    SELECT user, Length(`Password`) FROM  `mysql`.`user`;
    

Cela vous montrera quels mots de passe sont dans l'ancien format, par exemple :

+----------+--------------------+
| user     | Length(`Password`) |
+----------+--------------------+
| root     |                 41 |
| root     |                 16 |
| user2    |                 16 |
| user2    |                 16 |
+----------+--------------------+

Notez ici que chaque utilisateur peut avoir plusieurs lignes (une pour chaque spécification d'hôte différente).

Pour mettre à jour le mot de passe de chaque utilisateur, exécutez la commande suivante :

UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username';

Enfin, purgez les privilèges :

FLUSH PRIVILEGES;

Source :Comment réparer "mysqlnd ne peut pas se connecter à MySQL 4.1+ en utilisant l'ancienne authentification" sur PHP5.3