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?
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.
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.
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):
/etc/init.d/mysql stop
Sortie:
Stopping MySQL database server: mysqld.
mysqld_safe --skip-grant-tables &
Sortie:
[1] 5988
Starting mysqld daemon with databases from /var/lib/mysql
mysqld_safe[6025]: started
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>
mysql> use mysql;
mysql> update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
/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
/etc/init.d/mysql start
mysql -u root -p
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".
J'ai eu le même problème. Vous devez écrire mysql -u root -p
NON mysql
ou mysql -u root -p root_password
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.
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.
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'.
Dans mon cas:
(dans une nouvelle fenêtre)