web-dev-qa-db-fra.com

Accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: oui) après réinitialisation du mot de passe LINUX

J'ai un MySQL installé sur mon serveur linux, j'ai oublié son mot de passe alors je suis allé le changer en utilisant les méthodes que j'ai trouvées sur le web. Ce que j'ai fait était comme suit:

/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql --user root mysql
SELECT * FROM user; // I checked if I could access the user table or not
update user SET password = PASSWORD('new_pass') WHERE user = 'root';
flush privileges;
exit

La requête de mise à jour a changé le mot de passe car elle m'a indiqué le nombre de lignes affectées et Requête OK, etc.

Puis j'ai redémarré mysql

/etc/init.d/mysql stop
/etc/init.d/mysql start

Maintenant, quand je me suis connecté avec le nouveau mot de passe 

mysql -u root -p new_pass

il me donne toujours des erreurs "ERREUR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: oui)"

Y a-t-il quelque chose qui me manque?

9
progrAmmar

En fait, j’ai jeté un œil plus attentif sur la table des utilisateurs dans la base de données mysql, il est déjà arrivé que quelqu'un modifie le champ ssl_type pour l'utilisateur root en SSL.

J'ai édité ce champ et ai redémarré MySQL et cela a fonctionné comme un charme.

Merci.

0
progrAmmar

J'ai pu résoudre ce problème en exécutant cette déclaration

Sudo dpkg-reconfigure mysql-server-5.5

Ce qui changera le mot de passe root.

17
Divz

Vous pouvez récupérer le mot de passe du serveur de base de données MySQL en suivant les cinq étapes ci-dessous . Voici les commandes à saisir pour chaque étape (identifiez-vous en tant qu'utilisateur root):

Étape 1: Arrêtez le service mysql

/etc/init.d/mysql stop

Sortie:

Stopping MySQL database server: mysqld.

Étape n ° 2: démarrez le serveur MySQL sans mot de passe:

mysqld_safe --skip-grant-tables &

Sortie:

[1] 5988

Starting mysqld daemon with databases from /var/lib/mysql

mysqld_safe[6025]: started

Étape n ° 3: Connectez-vous au serveur mysql à l'aide du client mysql:

mysql -u root

Sortie:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Étape 4: Configurez le nouveau mot de passe de l'utilisateur root MySQL.

mysql> use mysql;

mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';

mysql> flush privileges;

mysql> quit

Étape 5: Arrêtez le serveur MySQL:

/etc/init.d/mysql stop

Sortie:

Stopping MySQL database server: mysqld

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

Étape n ° 6: démarrez le serveur MySQL et testez-le

/etc/init.d/mysql start

mysql -u root -p
10
Tell Me How

Vous devez réinitialiser le mot de passe! étapes pour mac osx (testé et fonctionnel) et ubuntu

Arrêtez MySQL

$ Sudo /usr/local/mysql/support-files/mysql.server stop

Démarrez-le en mode sans échec:

$ Sudo mysqld_safe --skip-grant-tables

(la ligne ci-dessus est la commande entière)

Ce sera une commande en cours jusqu'à la fin du processus, alors ouvrez une autre fenêtre Shell/terminal, connectez-vous sans mot de passe:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

Démarrer MySQL

Sudo /usr/local/mysql/support-files/mysql.server start

votre nouveau mot de passe est "mot de passe".

6
tk_

J'ai eu le même problème. Vous devez écrire mysql -u root -p

NON mysql ou mysql -u root -p root_password

3
user3911158

Vous devrez peut-être effacer la colonne plugin pour votre compte root. Lors de ma nouvelle installation, unix_socket était défini dans la colonne plugin de tous les comptes d'utilisateur root. Cela entraînait le verrouillage du compte racine SQL uniquement sur le compte unix racine, car seule la racine système pouvait se connecter via un socket.

Si vous update user set plugin='' where User='root';flush privileges;, vous devriez maintenant pouvoir vous connecter au compte root à partir de n’importe quel compte unh localhost (avec un mot de passe).

Voir cette question AskUbuntu et sa réponse pour plus de détails.

2
Stephen Schrauger

Je rencontre le même problème, @ progrAmmar m'a éclairé, "a examiné de plus près la table des utilisateurs dans la base de données mysql".

Mon problème n'est pas ssl_type, au lieu du premier champ: Host. J'ai changé la valeur en utilisant 

update user set Host='localhost' where User='root' and Host='%';

dans le modèle mysqld_safe --skip-grant-tables

Alors ça marche bien.

2
Belter

Sur mac os, veuillez suivre les étapes ci-dessous:

Arrêtez MySQL

$ Sudo /usr/local/mysql/support-files/mysql.server stop Démarrez-le en mode sans échec:

$ Sudo mysqld_safe --skip-grant-tables (La ligne ci-dessus correspond à la commande complète)

Ce sera une commande en cours jusqu'à la fin du processus, alors ouvrez une autre fenêtre Shell/terminal, connectez-vous sans mot de passe:

$ mysql -u root

mysql> UPDATE mysql.user SET Mot de passe = PASSWORD ('mot de passe') WHERE User = 'root'; Démarrer MySQL

Sudo /usr/local/mysql/support-files/mysql.server start Votre nouveau mot de passe est 'password'.

1
Yang Wang

Dans mon cas:

  1. /etc/init.d/mysql stop
  2. mysqld_safe --skip-grant-tables & 

(dans une nouvelle fenêtre)

  1. mysql -u root
  2. mysql> use mysql;
  3. mysql> update user set authentication_string = mot de passe ('mot de passe') où utilisateur = 'racine';
  4. mysql> privilèges de vidage;
  5. mysql> quitter
  6. /etc/init.d/mysql restart
0
Michal