Comment résoudre l'erreur MySQL 1698 : un guide détaillé

Publié: 2024-03-28

Avez-vous essayé d'accéder à la base de données MySQL en tant qu'utilisateur root, mais êtes tombé sur le message d'erreur Erreur MySQL 1698 (28000) : Accès refusé pour l'utilisateur 'root'@'localhost' ? Il s'agit d'un problème courant pour les personnes travaillant avec MySQL. Il empêche l'accès à la base de données par divers moyens, notamment les interfaces de terminal, PHPMyAdmin ou client MySQL. Plus courante qu'avec tout autre système d'exploitation (OS), cette erreur apparaît pour les utilisateurs du système Ubuntu.

Dans ce guide détaillé, nous discuterons des principales causes de l'erreur MySQL 1698 et fournirons des solutions efficaces pour traiter et résoudre cette erreur. Commençons donc par résoudre ce problème, après quoi vous retrouverez un accès rapide à votre base de données MySQL.

Qu'est-ce que l'erreur MySQL 1698 et ses raisons ?

Derrière l'erreur MySQL 1698 se cache le problème de la façon dont MySQL vérifie si quelqu'un essayant de l'utiliser en tant qu'utilisateur « root » est autorisé à le faire. Avec certains systèmes d'exploitation, MySQL n'utilise pas de mot de passe standard pour l'utilisateur « root ». Le compte root MySQL le vérifie via le plugin auth_socket ou unix_socket. Ce plugin fonctionne sur la base des informations d'identification du système d'exploitation plutôt que d'un mot de passe, vérifiant si la demande de connexion de l'utilisateur provient d'un socket UNIX, puis validant le nom d'utilisateur par rapport aux informations d'identification du système.

Fondamentalement, si vous n'êtes pas connecté à votre système d'exploitation en tant qu'utilisateur « root », MySQL ne vous permettra pas d'y accéder en tant qu'utilisateur « root ». Cette méthode est censée rendre les choses plus sûres et plus faciles, mais dans ce processus, l'erreur 1698 peut survenir.

Cette erreur apparaît car il existe un conflit entre les mesures de sécurité et les attentes des utilisateurs. Comprendre la raison de l'erreur est la première étape pour corriger l'erreur 1698 et trouver des moyens de maintenir la base de données à la fois sûre et facile à utiliser.

 > Erreur MySQL 1698 (28000)

En apprenant davantage sur l'erreur MySQL 1698, nous découvrons que sa cause principale n'est pas le concept traditionnel de mots de passe mais une méthode d'authentification unique. Cette méthode implique le plugin auth_socket ou unix_socket, que nous avons évoqué ci-dessus.

Essentiellement, ce plugin ne se soucie pas du tout des mots de passe. Au lieu de cela, il vérifie si la connexion est établie via un socket UNIX, puis vérifie si le nom d'utilisateur essayant de se connecter correspond à celui connecté au système.

Cette approche de l'authentification s'écarte de la sécurité basée sur les mots de passe. Il montre comment le plugin fonctionne pour laisser entrer les gens en fonction des informations utilisateur provenant du système informatique.

Comment résoudre l’erreur MySQL 1698 ?

Discutons des solutions qui fonctionneront contre l'erreur MySQL 1698 et garantiront des interactions efficaces avec les bases de données à l'avenir.

Basculez l'utilisateur vers le plugin mysql_native_password

Passer au plugin « mysql_native_password » est une solution simple. Cette approche signifie mettre à jour le plugin d'authentification pour l'utilisateur root vers ` mysql_native_password` . Vous devez modifier les paramètres du plugin de l'utilisateur root, puis appliquer ces modifications en vidant les privilèges MySQL. Cette méthode restaure l’accès comme solution immédiate au problème de refus d’accès.

  1. Accédez au shell MySQL en tant qu'utilisateur privilégié.
  2. Utilisez cette commande pour changer la méthode d'authentification de l'utilisateur root sur ` mysql_native_password ` :
 ALTER USER 'root'@'localhost' IDENTIFIÉ AVEC mysql_native_password PAR 'your_new_password';

3. Videz les privilèges pour appliquer les modifications :

 PRIVILÈGES FLUSH ;

4. Quittez le shell MySQL et essayez à nouveau de vous connecter en tant qu'utilisateur root.

Ajouter un utilisateur système à la table des utilisateurs MySQL

L'ajout d'un utilisateur système à la table des utilisateurs MySQL et l'activation du plugin ` auth_socket ` améliorent la sécurité. Cette méthode exploite l'authentification au niveau du système d'exploitation, permettant l'accès à la base de données d'une manière plus sécurisée que l'authentification par mot de passe traditionnelle. Cette approche minimise le risque associé à l'utilisation du compte root directement pour les opérations de base de données.

  1. Connectez-vous au serveur MySQL en tant qu'utilisateur root ou en tant qu'utilisateur disposant de privilèges suffisants.
  2. Créez un nouvel utilisateur et définissez l'authentification sur ` auth_socket ` :
 CRÉER UN UTILISATEUR 'votre_utilisateur_système'@'localhost' IDENTIFIÉ AVEC auth_socket ;

3. Accordez les privilèges nécessaires au nouvel utilisateur :

 ACCORDEZ TOUS LES PRIVILÈGES SUR *.* À 'votre_utilisateur_système'@'localhost' AVEC OPTION D'OBTENTION ;

4. Videz les privilèges pour appliquer les modifications :

 PRIVILÈGES FLUSH ;

5. Connectez-vous à MySQL avec le nouvel utilisateur système, en utilisant les informations d'identification du système d'exploitation pour l'authentification.

Désactiver l'authentification unix_socket

Si vous souhaitez une solution de contournement rapide, la désactivation de l'authentification par socket UNIX peut fournir une solution immédiate, bien que moins sécurisée. Cette méthode permet à l'utilisateur root de se connecter à l'aide de protocoles de mot de passe standard en supprimant le plug-in de socket UNIX de la méthode d'authentification de l'utilisateur root. Bien que cela résolve le problème d’accès, vous devez tenir compte des compromis potentiels en matière de sécurité.

  1. Ouvrez la console MySQL.
  2. Mettez à jour l'utilisateur root pour désactiver l'authentification par socket UNIX :
 UPDATE mysql.user SET plugin='' WHERE User='root';

3. Videz les privilèges pour enregistrer les modifications :

 PRIVILÈGES FLUSH ;

L'utilisateur root peut désormais s'authentifier à l'aide d'un mot de passe, en contournant la méthode socket UNIX.

Conclusion

L'erreur MySQL 1698 est comme un blocage sur votre chemin lorsque vous essayez d'accéder à votre base de données. Que vous rencontriez cette erreur pour la première fois ou que vous cherchiez à éviter de futures occurrences, il est crucial de comprendre les spécificités de cette erreur. Pour résoudre l'erreur MySQL 1698, vous devez avoir une compréhension approfondie de l'architecture d'authentification de MySQL, en particulier lorsqu'elle recoupe les pratiques de sécurité au niveau du système d'exploitation, telles que celles observées dans les systèmes Ubuntu.

L'erreur MYSQL 1698, qui refuse l'accès à l'utilisateur root, exige une configuration réfléchie des mécanismes d'authentification au sein de MySQL.

Nous avons discuté de méthodes de solution approfondies allant de la modification du plugin d'authentification à ` mysql_native_password `, à l'intégration des utilisateurs du système dans la table des utilisateurs de MySQL avec le plugin ` auth_socket `, ou à la désactivation complète de l'authentification UNIX_socket. Chaque solution offre une approche unique pour contourner l'erreur, adaptée à différentes postures de sécurité et préférences administratives. Celui que vous choisirez dépendra du niveau de sécurité que vous souhaitez avoir en utilisant votre système de gestion de base de données.