$ ./ mysqladmin -u racine -p ' expurgé '
Entrer le mot de passe:
mysqladmin: erreur de connexion au serveur 'localhost':
'Accès refusé pour l'utilisateur' root '@' localhost '(avec mot de passe: OUI)'
Comment puis-je réparer cela?
/etc/my.cnf
_ ou _/etc/mysql/my.cnf
_, en fonction de votre distribution.skip-grant-tables
_ sous _[mysqld]
_mysql -u root -p
_mysql> flush privileges;
_ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
mysql -u root -p
_Toutes les solutions que j'ai trouvées étaient beaucoup plus complexes que nécessaire et aucune ne fonctionnait pour moi. Voici la solution qui a résolu mon problème. Pas besoin de redémarrer mysqld ou de le démarrer avec des privilèges spéciaux.
Sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
Avec une seule requête nous changeons le auth_plugin en mysql_native_password et définissons le mot de passe root pour root (n'hésitez pas à le changer dans la requête)
Vous devriez maintenant pouvoir vous connecter avec root. Plus d'informations peuvent être trouvées dans documentation mysql
(quittez la console mysql avec Ctrl + D ou en tapant exit )
J'ai essayé plusieurs étapes pour résoudre ce problème. Il existe tellement de sources de solutions possibles à ce problème qu'il est difficile de filtrer le sens du non-sens. J'ai enfin trouvé une bonne solution ici :
Étape 1: Identifiez la version de la base de données
$ mysql --version
Vous verrez des résultats comme celui-ci avec MySQL:
$ mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
Ou une sortie comme celle-ci pour MariaDB:
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
Notez quelle base de données et quelle version vous utilisez, car vous les utiliserez plus tard. Ensuite, vous devez arrêter la base de données pour pouvoir y accéder manuellement.
Étape 2: arrêt du serveur de base de données
Pour changer le mot de passe root, vous devez au préalable arrêter le serveur de base de données.
Vous pouvez le faire pour MySQL avec:
$ Sudo systemctl stop mysql
Et pour MariaDB avec:
$ Sudo systemctl stop mariadb
Étape 3: redémarrage du serveur de base de données sans vérification des autorisations
Si vous exécutez MySQL et MariaDB sans charger les informations sur les privilèges de l'utilisateur, cela vous permettra d'accéder à la ligne de commande de la base de données avec les privilèges root sans fournir de mot de passe. Cela vous permettra d'accéder à la base de données sans le savoir.
Pour ce faire, vous devez empêcher la base de données de charger les tables d'attribution, qui stockent les informations de privilège de l'utilisateur. Comme il s’agit là d’un risque pour la sécurité, vous devez également ignorer la mise en réseau afin d’empêcher d’autres clients de se connecter.
Démarrez la base de données sans charger les tables de droits d'accès ni activer la mise en réseau:
$ Sudo mysqld_safe --skip-grant-tables --skip-networking &
L'esperluette à la fin de cette commande fera en sorte que ce processus s'exécute en arrière-plan afin que vous puissiez continuer à utiliser votre terminal.
Vous pouvez maintenant vous connecter à la base de données en tant qu'utilisateur root, ce qui ne devrait pas vous demander de mot de passe.
$ mysql -u root
Vous verrez immédiatement une invite de base de données à la place.
Invite MySQL
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Invite MariaDB
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
Maintenant que vous avez un accès root, vous pouvez changer le mot de passe root.
Étape 4: modification du mot de passe racine
mysql> FLUSH PRIVILEGES;
Maintenant, nous pouvons réellement changer le mot de passe root.
Pour MySQL 5.7.6 et plus récent ainsi que MariaDB 10.1.20 et plus récent , utilisez la commande suivante:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
Pour MySQL 5.7.5 et plus ancien ainsi que MariaDB 10.1.20 et plus ancien , utilisation:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
Assurez-vous de remplacer new_password
par votre nouveau mot de passe.
Remarque: Si la commande ALTER USER
ne fonctionne pas, cela indique généralement un problème plus grave. Cependant, vous pouvez essayer UPDATE ... SET
pour réinitialiser le mot de passe root à la place.
[IMPORTANT] Il s'agit de la ligne spécifique qui a résolu mon problème particulier:
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
N'oubliez pas de recharger les tables de subvention après cela.
Dans les deux cas, vous devriez voir confirmation que la commande a été exécutée avec succès.
Query OK, 0 rows affected (0.00 sec)
Le mot de passe a été modifié. Vous pouvez donc maintenant arrêter l'instance manuelle du serveur de base de données et la redémarrer comme auparavant.
Étape 5: redémarrez le serveur de base de données normalement
Le tutoriel décrit d'autres étapes pour redémarrer la base de données, mais le seul élément que j'ai utilisé est le suivant:
Pour MySQL, utilisez: $ Sudo systemctl start mysql
Pour MariaDB, utilisez:
$ Sudo systemctl start mariadb
Maintenant, vous pouvez confirmer que le nouveau mot de passe a été appliqué correctement en exécutant:
$ mysql -u root -p
La commande devrait maintenant demander le mot de passe nouvellement attribué. Entrez-le et vous devriez accéder à l'invite de la base de données comme prévu.
Conclusion
Vous avez maintenant un accès administratif au serveur MySQL ou MariaDB restauré. Assurez-vous que le nouveau mot de passe root que vous choisissez est fort et sécurisé et conservez-le en lieu sûr.
Exécutez ce qui suit pour vous connecter en tant que root
(sans mot de passe)
Sudo /usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf
Si vous ne souhaitez pas ajouter --defaults-file
à chaque fois que vous souhaitez vous connecter en tant que root
, vous pouvez copier /etc/mysql/debian.cnf
dans votre répertoire personnel:
Sudo cp /etc/mysql/debian.cnf ~/.my.cnf
puis:
Sudo mysql
Pour les nouveaux utilisateurs de Linux, cela pourrait être une tâche ardue. Permettez-moi de mettre à jour cela avec mysql 8 (la dernière version disponible est la version 8.0.12 à compter du 12 sept. 2018)
C'est ça.
Après avoir essayé toutes les autres réponses, voici ce qui a finalement fonctionné pour moi
Sudo mysql -- It does not ask me for any password
-- Then in MariaDB/MySQL console:
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
exit;
J'ai trouvé la réponse dans cet article: https://medium.com/@chiragpatel_52497/solved-error-access-denied-for-user-root-localhost-of-mysql-programming-school-6e3611838d06 =
Dans votre atelier MySQL, vous pouvez aller dans la barre latérale gauche, sous Gestion, sélectionnez "Utilisateurs et privilèges", cliquez sur racine sous Comptes d'utilisateur, dans la section de droite, cliquez sur l'onglet "Limites de compte" pour augmenter le nombre maximal de requêtes, de mises à jour, etc. puis cliquez sur l'onglet "Rôles administratifs" et cochez les cases pour donner accès au compte. J'espère que ça t'as aidé!
Je l’ai fait pour définir mon mot de passe root lors de la configuration initiale de MySQL dans OSx. Ouvrez un terminal.
Sudo sh -c 'echo /usr/local/mysql/bin > /etc/paths.d/mysql'
Fermez le terminal et ouvrez un nouveau terminal. Et les suivants fonctionnent sous Linux, pour définir un mot de passe root.
Sudo /usr/local/mysql/support-files/mysql.server stop
Sudo mysqld_safe --skip-grant-tables
(Sudo mysqld_safe --skip-grant-tables: Cela n’a pas fonctionné pour moi la première fois. Mais lors du deuxième essai, le succès a été positif.)
Puis connectez-vous à MySQL
mysql -u root
FLUSH PRIVILEGES;
Maintenant changez le mot de passe:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
Redémarrez MySQL:
Sudo /usr/local/mysql/support-files/mysql.server stop
Sudo /usr/local/mysql/support-files/mysql.server start
Cela peut arriver si vous n'avez pas assez de privilèges. Tapez su
, entrez le mot de passe root et réessayez.
Dans mon cas sous Debian 10, l'erreur
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
a été résolu par (GOOD WAY)
Sudo mysql -u root -p mysql
MAUVAISE MANIÈRE:
mysql -u root -p mysql
Si vous êtes comme moi et que toutes les suggestions ci-dessus ont échoué, désinstallez toutes les versions de mysql sur votre ordinateur, recherchez tous les fichiers mysql restants à l'aide de la commande Sudo find / -name "mysql"
et rm -rf
de chaque fichier ou répertoire contenant mysql. nom qui y est attaché (vous devez ignorer les fichiers liés aux bibliothèques de langages de programmation). Maintenant, installez une nouvelle version de MySQL et profitez-en. NB: Vous perdrez toutes vos données alors pesez vos options en premier.