Maison >base de données >tutoriel mysql >Pourquoi est-ce que j'obtiens l'erreur MySQL 1698 (accès refusé) et comment puis-je la corriger ?

Pourquoi est-ce que j'obtiens l'erreur MySQL 1698 (accès refusé) et comment puis-je la corriger ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-25 13:12:12424parcourir

Why Am I Getting MySQL Error 1698 (Access Denied) and How Can I Fix It?

Erreur de gestion 1698 lors de la connexion MySQL

Les utilisateurs peuvent rencontrer ERREUR 1698 (28000) : accès refusé pour l'utilisateur 'root'@ 'localhost' lorsque vous essayez de vous connecter à la base de données MySQL avec l'utilisateur root. Cette erreur est souvent rencontrée sur des systèmes comme Ubuntu, où MySQL utilise le plugin Unix auth_socket pour l'authentification par défaut.

Contexte : Le plugin auth_socket s'appuie sur les informations d'identification de l'utilisateur système pour l'authentification. En interrogeant la table mysql.user, vous pouvez vérifier que l'utilisateur root est enregistré avec ce plugin :

SELECT User, Host, plugin FROM mysql.user;

Solutions possibles :

Option 1 : Configurer l'utilisateur root pour utiliser le plugin mysql_native_password
Cette méthode implique de configurer l'utilisateur root pour qu'il utilise le plus traditionnel Plugin mysql_native_password :

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
sudo service mysql restart

Option 2 : Créer un nouvel utilisateur de base de données (recommandé)
Une approche alternative consiste à créer un nouvel utilisateur de base de données en utilisant votre nom d'utilisateur système. Cela fournit une option plus gérable et sécurisée :

CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
FLUSH PRIVILEGES;
sudo service mysql restart

Notez qu'avec l'option 2, vous vous connecterez à MySQL en utilisant le nom d'utilisateur de votre système :

mysql -u YOUR_SYSTEM_USER

Considérations supplémentaires :

  • Dans les versions MySQL 8.x.x, le plugin auth_socket a peut-être été remplacé par cache_sha2_password. Consultez la documentation MySQL pour connaître le plugin d'authentification et la méthode de connexion appropriés.
  • Dans Debian 9 (Stretch), le plugin auth_socket est renommé en unix_socket. Ajustez la commande SQL en conséquence.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn