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

pseudo
la source
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');

kta
la source
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

VSB
la source
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.

iamfaith
la source
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)

Robert Anthony S. Tribiana
la source
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

pseudo
la source
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

Lokesh G
la source
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.

Bamboomy
la source
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';
Carlito
la source
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

LV98
la source
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».

tk_
la source
J'ai un message: aucune base de données sélectionnée
Mimouni
@Mimouni essayez ceci: stackoverflow.com/questions/21944936/…
tk_
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');
Eagle_Eye
la source
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.

Suhas
la source
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
Marian Theisen
la source
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';
Kamal Reddy
la source
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

Darush
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'

escalier
la source
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é.

Konstantin Romanovsky
la source
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é ...

MohitGhodasara
la source
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.

Shaofei Cheng
la source
-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.

Mouneer
la source
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
NNK Teja
la source