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
Libérer: 2024-12-25 13:12:12
original
522 Les gens l'ont consulté

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;
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal