Modification du mot de passe root MySQL


95

J'ai essayé de réinitialiser mon mot de passe root MySQL. J'ai exécuté le mysqld_safe --skip-grant-tables, mis à jour le mot de passe root et vérifié la table des utilisateurs pour m'assurer qu'il est là. Après avoir redémarré le démon mysql, j'ai essayé de me connecter avec le nouveau mot de passe root que je viens de définir et j'ai toujours accès refusé pour les erreurs de l'utilisateur «root». J'ai également essayé de supprimer et de réinstaller complètement mysql (y compris la suppression du fichier my.cnf) et toujours pas de chance. Quelqu'un a-t-il des suggestions sur ce que je peux faire ensuite?

Merci d'avance


2
s'il vous plaît poster votre erreur réelle
Vishwanath Dalvi

16
Si votre non verrouillé SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword'); est le plus sûr.
sabgenton

J'ai suivi les étapes de la vidéo pour changer le mot de passe dans l'un de mes serveurs youtu.be/gFo5DV_pSg8
Prem


1
Version du serveur: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) ERREUR 1064 (42000): Vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à votre version de serveur MySQL pour la bonne syntaxe à utiliser à côté de 'PASSWORD ("1")' à la ligne 1 SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ("somepassword");
discipleartem

Réponses:


124

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');


7
Cela fonctionne pour moi dans 5.7 alors que la réponse acceptée ne l'est pas.
Stoopkid

2
C'est la bonne solution si votre mot de passe root MySQL est vide.
fschuindt

3
> METTRE À JOUR mysql.user SET authentication_string = PASSWORD ('MyNewPass') WHERE user = 'root'; > PRIVILÈGES DE RINÇAGE; Dans MySQL version 5.7.x, il n'y a plus de champ de mot de passe dans la table mysql. Il a été remplacé par authentication_string.
Robert Anthony S. Tribiana

2
Cela me
convient

1
Il a besoin d'une commande supplémentaire FLUSH PRIVILEGESpour rendre effective la modification sans redémarrer le serveur de base de données.
NetVicious

60

jetez un œil à ceci dans le manuel de référence MySQL:

Première connexion mysql:

# mysql -u root -p

Ensuite, à l'invite mysql, exécutez:

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

ensuite

FLUSH PRIVILEGES;

Consultez cette page pour plus d'informations: Réinitialisation du mot de passe root: Systèmes Unix


J'ai eu une erreur "Vous utilisez le mode de mise à jour sans échec et vous avez essayé de mettre à jour une table sans un WHERE qui utilise une colonne KEY ..." lors de la mise à jour du mot de passe de l'utilisateur. Voir stackoverflow.com/questions/11448068/ ... pour savoir comment contourner cette erreur.
Joe Borysko

ERREUR 1064 (42000): vous avez une erreur dans votre syntaxe SQL; Vérifiez le manuel qui correspond à la version de votre serveur MySQL pour la bonne syntaxe à utiliser près de '(' MyNewPass ') WHERE User =' root '' à la ligne 1
discipleartem

28
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Vous pouvez trouver Réinitialiser le mot de passe root dans la documentation MySQL.


Cette requête fonctionne pour moi mais le nouveau mot de passe ne fonctionne pas (accès refusé). Cela ne commence à fonctionner qu'après avoir recréé l'utilisateur root askubuntu.com/a/784347/160368 .
hlcs

1
fonctionne pour moi sur MySQL 8.0.20 et après l'initialisation du dossier de données à l'aide de cette commandemysqld --initialize --console
A. Henteti

27

Ceci est la réponse mise à jour pour WAMP v3.0.6 et plus

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

> FLUSH PRIVILEGES;

Dans MySQL version 5.7.x, il n'y a plus de champ de mot de passe dans la table mysql. Il a été remplacé par authentication_string. (Ceci est pour le terminal / CLI)

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE user='root';

FLUSH PRIVILEGES;

(Ceci si pour PHPMyAdmin ou toute interface graphique Mysql)


Cette réponse est l'une des rares à dire que le mysql.usertableau devrait être mis à jour. Notez que si vous utilisez une autre base de données (définie par la usecommande), vous obtiendrez une erreur indiquant que la table usern'existe pas. Merci Monsieur!
Aleksandar

1
travaille pour moi . J'utilise 5.7.x, il n'y a pas de mysql.usertable. les autres réponses sont
obsolètes

Heureux d'aider!!
Robert Anthony S. Tribiana

Je l'annule parce que j'ai l'intention d'utiliser> à cause du point-virgule par ligne qui est destiné au terminal
Robert Anthony S. Tribiana

0 lignes affectées, lignes correspondantes: 3 modifiées: 0 ...?
trainoasis

22

Trouvé! J'ai oublié de hacher le mot de passe lorsque je l'ai changé. J'ai utilisé cette requête pour résoudre mon problème:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

J'ai oublié le PASSWORD('NEW PASSWORD')et je viens de mettre le nouveau mot de passe en texte brut


assurez-vous de revenir et d'accepter votre réponse pour permettre aux autres de voir la solution
ghostJago

1
dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html montre comment faire cela --init-file=si vous avez regardé.
sabgenton

3
Une idée pourquoi lorsque j'utilise la même commande, l'erreur suivante est renvoyée? Erreur 1054 (42S22): colonne inconnue 'Mot de passe' dans la 'liste des champs'
Adrian M.

1
Vous avez une erreur dans votre syntaxe SQL; vérifiez le manuel qui correspond à votre version de serveur MySQL pour la bonne syntaxe à utiliser près de '(' NEW PASSWORD ') où user =' root '' à la ligne 1
discipleartem

20

Veuillez suivre les étapes ci-dessous.

étape 1. arrête mysql

étape 2. sudo mysqld_safe --skip-grant-tables

étape 3.mysql -u root

étape 4.use mysql;

step5.show tables;

étape 6.describe user;

étape 7.update user set authentication_string=password('1111') where user='root';

connexion avec mot de passe 1111


3
flush privilegesest important comme dernière étape.
Khom Nazid

C'est vraiment fait avec le cul. J'ai fait tous les tutoriels pour réinitialiser le mot de passe. Tout fonctionne sauf lorsque je me connecte avec le nouveau mot de passe, cela ne fonctionne pas.
Shidomaru NeveRage

si mysqld ne démarre pas et que le message comme ce démon mysqld avec les bases de données de / var / lib / mysql mysqld_safe mysqld du fichier pid /var/run/mysqld/mysqld.pid est terminé, faites ceci: mkdir / var / run / mysqld chomod 777 / var / run / mysqld et tout démarrer à partir de la mendicité
jokermt235

18

J'ai aussi cherché partout et probablement certaines réponses conviennent à certaines situations,

ma situation est Mysql 5.7 sur un système Ubuntu 18.04.2 LTS:

(obtenir les privilèges root)

$ sudo bash

(configurer le mot de passe pour l'utilisateur root db + implémenter la sécurité par étapes)

# mysql_secure_installation

(donnez accès à l'utilisateur root via un mot de passe au lieu de socket)

(+ edit: apparemment vous devez redéfinir le mot de passe?)

(ne le définissez pas sur 'mySecretPassword' !!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

Un grand merci à zetacu (et à erich ) pour cette excellente réponse (après avoir cherché quelques heures ...)

Profitez :-D

S.


C'est la meilleure réponse à ce jour, du moins pour le serveur mysql 5.7.
Zoltán Hajdú le

La meilleure réponse. Je vous remercie.
Luciano Fantuzzi

11

Sur MySQL 8.0.4+

Pour mettre à jour l'utilisateur root actuel:

select current_user();
set password = 'new_password';

Pour mettre à jour un autre utilisateur:

set password for 'otherUser'@'localhost' = 'new_password';

Pour définir la politique de mot de passe avant de mettre à jour le mot de passe:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

Autre / meilleure façon de mettre à jour le mot de passe root:

mysql_secure_installation

Vous voulez vous en tenir à l'authentification 5.x afin de pouvoir toujours utiliser les anciennes applications?

Sur my.cnf

default_authentication_plugin = mysql_native_password

Pour mettre à jour la racine:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';

7

Cela a fonctionné pour moi -

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

https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html


ERREUR 1064 (42000): vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version de serveur MySQL pour la bonne syntaxe à utiliser près de 'IDENTIFIED BY' MyNewPass '' à la ligne 1
trainoasis

Juste copié l'exact sur SQL via CLI: o
trainoasis

Bien sûr, sshed sur mon serveur + mysql -u root -p pour accéder au cli mysql
trainoasis

6

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

(au-dessus de la ligne se trouve la commande entière)

Ce sera une commande en cours jusqu'à ce que le processus soit terminé, 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émarrez MySQL

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

votre nouveau mot de passe est «mot de passe».


J'ai un message: aucune base de données sélectionnée
Mimouni


5

Pour MySQL 5.7.6 et versions ultérieures:

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

Pour MySQL 5.7.5 et versions antérieures:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

3

Pour la dernière version actuelle de mysql (8.0.16), aucune de ces réponses n'a fonctionné pour moi.

Après avoir examiné plusieurs réponses différentes et les avoir combinées, voici ce que j'ai fini par utiliser qui a fonctionné:

update user set authentication_string='test' where user='root';

J'espère que cela t'aides.


2

une erreur courante que je rencontre de temps en temps, c'est que j'oublie l' -poption, alors êtes-vous sûr d'avoir utilisé:

mysql -u root -p

2

Dans MySQL 5.7, le mot de passe est remplacé par 'authentication_string'.

utilisation

update user set authentication_string=password('myfavpassword') where user='root';

2

Utilisation de l' utilitaire de ligne de commande mysqladmin pour modifier le mot de passe MySQL:

mysqladmin --user=root --password=oldpassword password "newpassword"

La source


1

J'ai essayé la réponse de @kta mais cela n'a pas fonctionné pour moi.

J'utilise MySQL 8.0

Cela a fonctionné pour moi:

mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'


1
Veuillez ajouter quelques explications à votre code - comment cela résout-il exactement une question vieille de sept ans?
Nico Haase

Il semble que la syntaxe ait été modifiée au cours des sept ans. Ce n'est pas un mot de passe enveloppant avec PASSWORD () dev.mysql.com/doc/refman/8.0/en/set-password.html
kangkyu

Le hachage du mot de passe doit être un nombre hexadécimal à 41 chiffres
Mimouni

1

Tant de commentaires, mais j'ai été aidé par cette méthode:

sudo mysqladmin -u root password 'my password'

Dans mon cas, après l'installation, j'avais obtenu le service mysql sans mot de passe pour l'utilisateur root, et j'avais besoin de définir le mot de passe pour ma sécurité.


Il pourrait être utilisé pour réinitialiser le mot de passe de l'utilisateur root mysql sans connaître l'ancien. Mais assurez-vous que personne n'a accès à votre syslog, car ce mot de passe est enregistré:Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
Gryu

0

arrêtez tous les services wamp, sortez de wamp.

ouvrez le bloc-notes puis tapez> SET PASSWORD FOR 'root' @ 'localhost' = PASSWORD ('');

puis enregistrez-le sur le lecteur c: avec n'importe quel nom .. comme ceci "c: /example.txt"

maintenant allez à votre "wamp" falder wamp> bin> mysql> mysql (votre version)> bin dans mon cas le chemin est "C: \ wamp \ bin \ mysql \ mysql5.6.17 \ bin"

maintenant copiez votre chemin puis exécutez cmd avec (ctrl + r) puis tapez "cmd" (entrée)

tapez cd puis faites un clic droit sur cmd et collez le chemin (entrez) maintenant tapez (mysqld --init-file = C: \ example.txt) sans accolades puis (entrez)

puis redémarrez le PC ou ouvrez taskmgr et tuez mysqld.exe

démarrez wamp et votre mot de passe sera supprimé ...


0

Pour les utilisateurs de MacOS, si vous oubliez votre mot de passe root, la réponse de @ soharaK ( https://stackoverflow.com/a/28601069/5628856 ) est bonne, mais il y a un peu plus d'astuces:

Si vous utilisez les préférences système pour démarrer mysql serverside, il suffit

sudo mysqld_safe --skip-grant-tables

pourrait ne pas fonctionner pour vous.

Vous devez vous assurer que les arguments de la ligne de commande sont les mêmes avec la configuration de démarrage du système.

La commande suivante fonctionne pour moi:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

Vous pouvez utiliser

ps aux | grep mysql

pour vérifier le vôtre.


-1

Sur Ubuntu,

sudo dpkg-reconfigure mysql-server-5.5 

Remplacez 5.5par votre version actuelle et vous serez invité à entrer le nouveau mot de passe root.


Dans quel OS? Cela n'a aucun sens.
Khom Nazid

-1
  1. Sur Mac, ouvrez les préférences système> MySQL.
  2. Dans la section de configuration de MySQL, vérifiez l'initialisation de la base de données.
  3. modifiez le mot de passe dans l'invite. initialiser la base de données
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.