Correction d'une erreur de connexion MySQL en raison d'une authentification non sécurisée
Lorsque vous tentez d'établir une connexion à une base de données, vous pouvez rencontrer l'erreur suivante :
Database connection failed: mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD('your_existing_password').
Copier après la connexion
Ce problème est dû à une incompatibilité entre les versions de PHP et MySQL. MySQL a amélioré ses mesures de sécurité, nécessitant l'utilisation de méthodes d'authentification plus sécurisées.
Résolution :
-
Mettre à jour la configuration du serveur :
- Sur votre serveur d'hébergement Web (temple des médias), consultez votre hébergeur pour mettre à jour la version de MySQL vers 5.5.16 ou version ultérieure (faites correspondre la version sur votre machine locale).
-
Désactiver l'authentification non sécurisée :
- Localisez le fichier de configuration "my.cnf" (par exemple, "/etc/my.cnf" ou "/opt/lampp/etc/my.cnf").
- Supprimez ou commentez la ligne "old_passwords = 1".
-
Redémarrez MySQL :
- Pour appliquer les modifications, redémarrez le service MySQL.
-
Réinitialiser les mots de passe :
- Connectez-vous à la base de données MySQL à l'aide d'un outil d'administration (par exemple, MySQL Workbench ou phpMyAdmin).
- Exécutez la requête « SELECT user, length(Password) FROM mysql.user ; » pour identifier les utilisateurs avec des mots de passe non sécurisés (hachage de 16 caractères).
- Mettez à jour le mot de passe de chaque utilisateur avec une authentification non sécurisée à l'aide de la requête "UPDATE mysql.user SET Password = PASSWORD('password') WHERE user = 'username ';".
-
Flush Privileges :
- Exécutez la requête "FLUSH PRIVILEGES ;" pour propager les modifications de mot de passe.
Considérations supplémentaires :
- Si vous utilisez PHP 5.2 ou une version antérieure sur le côté serveur, vous devrez peut-être supprimer l'indicateur "old-passwords" du fichier "my.cnf" pour autoriser les méthodes d'authentification obsolètes.
- Assurez-vous que le mot de passe de l'utilisateur root MySQL est sécurisé, comme mentionné dans l'erreur. message.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!