GNU/Linux >> Tutoriels Linux >  >> Cent OS

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

Après la mise à niveau d'un serveur PHP de PHP 5.3.3 vers PHP 5.6.x, en travaillant avec MySQL Server 5.1.x sur une simple boîte CentOS 6.x 64 bits, quelques nouvelles applications Web affichaient cette erreur de connexion mysqlnd : mysqlnd ne peut pas se connecter à MySQL 4.1+ en utilisant l'ancienne authentification non sécurisée

C'était l'erreur complète et exacte :

mysqlnd ne peut pas se connecter à MySQL 4.1+ en utilisant l'ancienne authentification non sécurisée. Veuillez utiliser un outil d'administration pour réinitialiser votre mot de passe avec la commande SET PASSWORD =PASSWORD(‘your_existing_password’). Cela stockera une nouvelle valeur de hachage plus sécurisée dans mysql.user. Si cet utilisateur est utilisé dans d'autres scripts exécutés par PHP 5.2 ou une version antérieure, vous devrez peut-être supprimer l'indicateur d'anciens mots de passe de votre fichier my.cnf

Cela se produit parce que le nouveau client mysqlnd php refuse de travailler avec les anciens mots de passe de MySQL. Ainsi, même si vous avez old_passwords=1, cela ne fonctionnera pas pour ces nouvelles applications Web, qui nécessitent une sécurité de hachage de mot de passe renforcée.

Comment puis-je corriger l'erreur mysqlnd ne peut pas se connecter à MySQL 4.1+ en utilisant l'ancienne authentification non sécurisée ?

Cette erreur peut être corrigée facilement si vous suivez les étapes suivantes :

Modifier le fichier de configuration MYSQL principal :

nano -w /etc/my.cnf

Modifier :

old_passwords=1

à

old_passwords=0

Appliquer les modifications :

service mysqld restart

Connectez-vous à la console MySQL en tant que root :

mysql -u root -p

Réinitialisez maintenant le mot de passe de l'utilisateur pour utiliser le nouveau hachage :

SET PASSWORD FOR 'mysqluser'@'localhost'=PASSWORD('passwordhere');
flush privileges;

Remplacez "mysqluser" et "passwordhere" par votre vrai nom d'utilisateur et mot de passe.

Revenez maintenant à /etc/my.cnf et annulez les modifications apportées précédemment, définissez :

old_password=1

Redémarrez MySQL pour appliquer les modifications :

service mysqld restart

Tout est fait, votre utilisateur devrait maintenant utiliser le hachage de mot de passe MySQL plus fort.
Cela peut être vérifié à partir de la console MySQL à l'aide de cette commande :

mysql> SELECT user, Length(Password) FROM mysql.user;
+------------------+------------------+
| user | Length(Password) |
+------------------+------------------+
| root | 16 |
| forum_user | 16 |
| user2 | 41 |
| lorex | 41 |
| m3user | 16 |

Si vous voyez '41', alors cet utilisateur utilise le nouveau hachage, et '16' signifie qu'il utilise l'ancien hachage.

Tout est fait, à ce stade, votre erreur mysqlnd ne peut pas se connecter à MySQL 4.1+ en utilisant l'ancienne authentification non sécurisée devrait être corrigée et vous devriez pouvoir travailler normalement avec vos applications Web.

Comment réparer :mysqlnd ne peut pas se connecter à MySQL 4.1+ en utilisant l'ancienne authentification non sécurisée Dernière modification :7 février 2017 par Esteban Borges
Cent OS
  1. Comment configurer la configuration MySQL Master-Slave à l'aide des nœuds CentOS 7 ?

  2. Comment créer une base de données dans MySQL à l'aide de la ligne de commande

  3. Comment sauvegarder et restaurer la base de données MySQL à l'aide de la ligne de commande

  4. Comment se connecter à distance à MySQL

  5. Comment connecter un hôte distant à l'aide de la commande ssh

Comment configurer une base de données à l'aide de l'assistant de base de données MySQL

Comment installer le dernier MySQL 8 dans Ubuntu

Comment installer le dernier MySQL 8 sur Debian 11

Comment installer le dernier MySQL 8 sur Ubuntu 20.04

L'application ne peut pas se connecter à la base de données

Comment se connecter à MySQL en utilisant PHP