Erreur MySQL:: 'Accès refusé pour l'utilisateur 'root' @ 'localhost'

$ ./ mysqladmin-u root-p ' redacted '

Entrer le mot de passe:

mysqladmin: se connecter au serveur à l'erreur' localhost':

'Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: oui) '

Comment puis-je réparer ça?

67
demandé sur clearlight 2017-01-14 03:06:49

9 réponses

  1. Ouvrez Et Modifiez /etc/my.cnf
  2. ajouter skip-grant-tables sous [mysqld]
  3. Redémarrer Mysql
  4. vous devriez être en mesure de vous connecter à mysql en utilisant la commande ci-dessous mysql -u root -p
  5. Exécuter mysql> flush privileges;
  6. définir nouveau mot de passe par ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
  7. retourner à /etc/my.cnf et supprimer / commentaire skip-grant-tables
  8. Redémarrer Mysql
  9. Maintenant vous pourrez vous connecter avec le nouveau mot de passe mysql -u root -p
122
répondu Kishore Venkataramanan 2017-01-22 17:31:52

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 commencer 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 paramétrons le mot de passe racine en root (n'hésitez pas à le changer dans la requête)

Maintenant vous devriez pouvoir vous connecter avec root. Plus d'informations peuvent être trouvées dans documentation mysql

(sortie console mysql avec Ctrl + D ou en tapant sortie )

148
répondu user1878906 2018-02-28 18:06:28

j'ai essayé de nombreuses étapes pour obtenir cette question corrigée. Il y a tellement de sources pour des solutions possibles à cette question qui est difficile de filtrer le sens de l'absurdité. J'ai finalement trouvé une bonne solution ici :

Étape 1: identifier la Version de la base de données

$ mysql --version

vous verrez une sortie comme celle-ci avec MySQL:

$ mysql  Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using  EditLine wrapper

ou sortie comme ceci 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 de sorte que vous pouvez y accéder manuellement.

Étape 2: l'Arrêt du Serveur de Base de données

pour changer le mot de passe root, vous devez préalablement arrêter le serveur de base de données.

vous pouvez faire cela pour MySQL avec:

$ sudo systemctl stop mysql

et pour MariaDB avec:

$ sudo systemctl stop mariadb

Étape 3: redémarrer le serveur de base de données sans vérification de Permission

si vous exécutez MySQL et MariaDB sans charger d'informations sur les privilèges de l'utilisateur, il vous permettra d'accéder à la ligne de commande de la base de données avec les privilèges root sans fournir un 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 de subventions, qui stockent des informations sur les privilèges de l'utilisateur. Parce que c'est un peu un risque de sécurité, vous devriez également sauter le réseautage ainsi pour empêcher les autres clients de se connecter.

démarrer la base de données sans charger les tables de subventions ou permettre la mise en réseau:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

l'ampli à la fin de cette commande fera tourner ce processus en arrière-plan pour que vous puissiez continuer à utiliser votre terminal.

Maintenant, vous pouvez vous connecter à la base de données en tant qu'utilisateur root, qui ne devrait pas demander de mot de passe.

$ mysql -u root

vous verrez immédiatement une invite de shell de base de données à la place.

Invite MySQL

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

MariaDB Invite

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

maintenant que vous avez l'accès root, vous pouvez changer le mot de passe root.

Étape 4: changer le mot de passe racine

mysql> FLUSH PRIVILEGES;

maintenant, nous pouvons changer le mot de passe racine.

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 ainsi que MariaDB 10.1.20 et plus , utilisez:

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

assurez-vous de remplacer new_password par le nouveau mot de passe de votre choix.

Note: si la commande ALTER USER ne fonctionne pas, c'est généralement indicatif d'un plus gros problème. Cependant, vous pouvez essayer UPDATE ... SET pour réinitialiser le mot de passe root à la place.

[IMPORTANT] Ceci est la ligne spécifique qui a corrigé 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 tableaux de subventions après cela.

dans les deux cas, vous devriez voir la confirmation que la commande a été exécutée avec succès.

Query OK, 0 rows affected (0.00 sec)

le le mot de passe a été modifié, donc vous pouvez maintenant arrêter l'instance manuelle du serveur de base de données et le redémarrer comme avant.

Étape 5: Redémarrer le serveur de base de données normalement

le tutoriel va dans quelques étapes supplémentaires pour redémarrer la base de données, mais le seul morceau que j'ai utilisé était ceci:

Pour MySQL, utilisez: $ sudo systemctl start mysql

pour MariaDB, utiliser:

$ sudo systemctl start mariadb

maintenant vous pouvez confirmer que le nouveau mot de passe a été appliqué correctement en lançant:

$ mysql -u root -p

la commande devrait maintenant demander le nouveau mot de passe assigné. 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 MySQL ou le serveur MariaDB restauré. Assurez-vous que le nouveau mot de passe root que vous choisissez est solide et sûr et le garder dans un endroit sûr.

14
répondu Blairg23 2018-03-07 21:52:09

pour les utilisateurs Ubuntu/Debian

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
10
répondu Fab 2018-02-27 12:02:24

dans votre workbench MySQL, vous pouvez aller dans la barre latérale gauche, sous gestion, sélectionnez" Utilisateurs et privilèges", cliquez sur root sous Comptes Utilisateurs, dans la section de droite, cliquez sur l'onglet" Limites de compte "pour augmenter les requêtes max, mises à jour, etc, puis cliquez sur l'onglet" Rôles administratifs " et cochez les cases pour donner l'accès au compte. Espérons que ça aide!

2
répondu Colleen Purcell 2017-05-12 20:38:01

j'ai fait cela pour configurer mon mot de passe root dans la configuration initiale de MySQL dans OSx. Ouvrez un terminal.

sudo sh -c 'echo /usr/local/mysql/bin > /etc/paths.d/mysql'

fermer le terminal et ouvrir un nouveau terminal. Et les suivants sont travaillés sous Linux, pour définir le 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 dans la première fois. Mais le deuxième essai, a été succès.)

puis se connecter à MySQL

mysql -u root

FLUSH PRIVILEGES;

maintenant changer le mot de passe:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

Redémarrer MySQL:

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start
2
répondu Sadee 2017-07-18 15:13:31

Pour les nouveaux utilisateurs de linux, cela pourrait être une tâche intimidante. Permettez-moi de mettre à jour cela avec mysql 8(la dernière version disponible en ce moment est 8.0.12 comme sur 12-Sep-2018)

  1. Ouvrir "mysqld.cnf "fichier de configuration à" / etc / mysql / mysql.conf.d/".
  2. Ajouter skip-grant-tables à la ligne suivante de [mysql] texte et l'enregistrer.
  3. Redémarrer le service mysql en tant que "sudo service mysql restart". Maintenant, votre mysql est libre de toute authentification.
  4. se Connecter à mysql client(aussi connu comme mysql, shell) mysql -u root -p . Il n'y a pas de mot de passe à saisir à partir de maintenant.
  5. exécuter la commande sql flush privileges;
  6. Réinitialiser le mot de passe maintenant comme modifier L'utilisateur 'root' @ 'localhost' identifié par' MyNewPassword';
  7. maintenant, revenons à l'état normal; supprimons cette ligne "skip-grant-tables "de" mysqld.cnf " et service de redémarrage.

C'est tout.

2
répondu Amit Kr 2018-09-11 22:05:02

' Accès refusé à l'utilisateur 'root' @ 'localhost'(en utilisant le mot de passe: oui)' Cette erreur ne se produit que si vous avez changé le mot de passe récemment, mais que vous n'avez pas modifié la configuration.Inc.fichier php de phpmyadmin.

donc j'ai résolu mon problème en changeant mon mot de passe en /XAMPP/xamppfiles/phpmyadmin/config.Inc.fichier php.

0
répondu Enginerd Sunio 2018-02-13 04:53:50

assurez-vous que vous avez démarré MySQL après le téléchargement.

mysql.server start

si vous obtenez l'erreur suivante: "erreur! Le serveur quitte sans mettre à jour le fichier PID", assurez-vous que vous n'avez pas D'autres instances de MySQL en cours d'exécution.

se référer à la réponse de Tombart: erreur de démarrage du serveur MySql "le serveur a quitté sans mettre à jour le fichier PID "

-1
répondu cormacncheese 2018-09-04 18:55:39