Comment trouver le mot de passe root MySQL

167

Je n'arrive pas à trouver mon mot de passe root MySQL; comment puis-je le savoir? Y a-t-il un fichier dans lequel ce mot de passe est stocké?

Je suis ce lien mais je n'ai pas d'annuaire directadmin en local.

Om3ga
la source
Trouvé par une simple recherche Google: dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran
11
le mot de passe root par défaut est - attendez - "root" (sans les guillemets), ou pas de mot de passe du tout (et ce serveur mysql est-il vraiment le vôtre)
Nikola Bogdanović
oui c'est mon serveur mysql local sur mon ordinateur portable
Om3ga
Alors est-ce que quelqu'un vient de passer par cette question et de rejeter un vote négatif sur chaque réponse correcte et pertinente ?
lanzz

Réponses:

142

grâce à @thusharaK j'ai pu réinitialiser le mot de passe root sans connaître l'ancien mot de passe.

Sur Ubuntu, j'ai fait ce qui suit:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

Puis exécutez mysql dans un nouveau terminal:

mysql -u root

Et exécutez les requêtes suivantes pour modifier le mot de passe:

UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;

Dans MySQL 5.7, le champ du mot de passe dans le champ de la table mysql.user a été supprimé, maintenant le nom du champ est 'authentication_string'.

Quittez le mode sans échec mysql et démarrez le service mysql en:

mysqladmin shutdown
sudo service mysql start
eeezyy
la source
24
J'ai dû utiliser mysqladmin -u root -p shutdown, avec le nouveau mot de passe.
SL Barth - Réintègre Monica
2
Beau flux d'instructions en particulier: puis exécutez mysql dans un nouveau terminal
Mohammed Subhi Sheikh Quroush
8
je ne peux pas faire ça mysql -u root. Il montre une erreurAccess denied
Avinash Raj
4
@AvinashRaj: Essayez ceci: sudo mysql -u root
Allen Gingrich
Impressionnant. Je comprends ce qui a fonctionné dans RHEL 7: Terminal 1: service sudo mysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking Terminal 2: mysql -u root UPDATE mysql.user SET Password = PASSWORD ('nouveau mot de passe') WHERE User = 'root'; PRIVILÈGES DE RINÇAGE; mysqladmin -u root -p shutdown Remarque: Une fois que vous arrêtez mysqladmin, vous verrez les sorties du mode sans échec dans le terminal 1. sudo service mysql start Voilà et cela fonctionne comme un charme avec le nouveau mot de passe!
Utilisateur StackOverFlow
65

Vous ne pouvez pas afficher le mot de passe haché; la seule chose que vous pouvez faire est de le réinitialiser!

Arrêtez MySQL:

sudo service mysql stop

ou

$ 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';

MySQL 5.7 et plus:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

Démarrez MySQL:

sudo mysql start

ou

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

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

tk_
la source
sudo /usr/local/mysql/support-files/mysql.server stop sudo: /usr/local/mysql/support-files/mysql.server: commande introuvable
Isuru
Que faire dans ce cas?
Isuru
On dirait que mysql n'est pas installé correctement. Désinstallez-le correctement et réinstallez-le.
tk_
Merci beaucoup. Quelque chose est allé bizarre avec mon mysql_secure_installationet root ne coopérait plus. Que fait le authentication_stringparamètre?
sera
3
Pour redémarrer, essayez mysqladmin -u root -p shutdownavec le nouveau mot de passe alorssudo service mysql start
forumulator
37

MySQL 5.7 et supérieur enregistre la racine dans le fichier journal MySQL.

Veuillez essayer ceci:

sudo grep 'temporary password' /var/log/mysqld.log
Vlad
la source
Dans mon cas, le mot de passe n'était pas ici; cependant, à la place, il /var/log/mysql/error.logcontenait un avertissement indiquant que le mot de passe root était vide - donc ce genre de chose a sauvé ma journée :)
Janaka Bandara
19

une chose qui m'a fait trébucher sur une nouvelle installation de mySQL et me demande pourquoi je ne pouvais pas faire fonctionner le mot de passe par défaut et pourquoi même les méthodes de réinitialisation ne fonctionnaient pas. Il s'avère que sur Ubuntu 18, la version la plus récente du serveur mysql n'utilise pas du tout l'authentification par mot de passe pour l'utilisateur root par défaut. Cela signifie que peu importe ce que vous définissez, cela ne vous permettra pas de l'utiliser. il s'attend à ce que vous vous connectiez depuis une socket privilégiée. alors

mysql -u root -p

ne fonctionnera pas du tout, même si vous utilisez le bon mot de passe !!! il refusera l'accès, peu importe ce que vous mettez.

Au lieu de cela, vous devez utiliser

sudo mysql

cela fonctionnera sans aucun mot de passe. puis une fois que vous êtes entré, vous devez taper

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

puis déconnectez-vous et maintenant la chose sanglante acceptera enfin votre mot de passe

Kit Ramos
la source
14

Suivez ces étapes pour réinitialiser le mot de passe dans le système Windows

  1. Arrêtez le service Mysql du gestionnaire de tâches

  2. Créez un fichier texte et collez l'instruction ci-dessous

MySQL 5.7.5 et versions antérieures:

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


MySQL 5.7.6 et versions ultérieures:

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

  1. Enregistrez sous mysql-init.txtet placez-le dans 'C' drive.

  2. Ouvrez l'invite de commande et collez ce qui suit

C:\> mysqld --init-file=C:\\mysql-init.txt

Lokesh kumar Chippada
la source
2
C'était une bouée de sauvetage, un excellent conseil!
Nicholas Kreidberg
travaillé dans Centos7 mysqld --init-file=/root/m.txt. J'ai ajouté la commande ci-dessus SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');à /root/m.txt
Damodar Bashyal
8

À moins que le gestionnaire de packages ne vous demande de taper le mot de passe root lors de l'installation, le mot de passe root par défaut est la chaîne vide. Pour vous connecter au serveur fraîchement installé, tapez:

shell> mysql -u root --password=
mysql>

Pour changer le mot de passe, récupérez le shell unix et tapez:

shell> mysqladmin -u root --password= password root

Le nouveau mot de passe est «root». Connectez-vous maintenant au serveur:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Oups, le mot de passe a changé. Utilisez le nouveau,root :

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

Bingo! Nouveau faire quelque chose d'intéressant

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Maurycy

mszmurlo
la source
1
il n'utilise pas de mots de passe mais des sockets authentifiés par défaut maintenant. donc changer simplement le mot de passe ne suffit plus.
Kit Ramos
7

En plus des autres réponses, dans une installation cpanel, le mot de passe root mysql est stocké dans un fichier nommé /root/.my.cnf. (et le service cpanel le réinitialise en cas de modification, les autres réponses ici n'aideront donc pas)

Ohad Cohen
la source
6

vous pouvez voir le mot de passe root mysql, eh bien je l'ai essayé sur mysql 5.5, donc je ne sais pas sur les autres nouvelles versions fonctionnent bien ou pas

nano ~/.my.cnf
user889030
la source
4

Cela a fonctionné pour moi:

Sur le terminal, tapez ce qui suit

$ sudo mysql -u root -p

Entrez le mot de passe: // appuyez simplement sur Entrée

mysql>

Lumière
la source
il semble que le serveur mysql n'utilise plus l'authentification par mot de passe par défaut. vous devez démarrer le client mysql en tant que super utilisateur (sudo) pour y accéder jusqu'à ce que vous changiez la méthode de connexion.
Kit Ramos
4

Le mot de passe par défaut qui a fonctionné pour moi après l'installation immédiate du serveur mysql est: mysql

Deepak Chaudhry
la source
2
peut-être qu'il n'a pas répondu à la question, mais de nombreuses personnes qui viennent ici trouveront peut-être que cela résout leur problème.
Ohad Cohen
3

La procédure change en fonction de la version de MySql. Suivez la procédure exactement comme celle décrite pour votre version:

  • CONSEILS - Lisez avant la page d'instructions de votre version de MySql *

  • À l'étape 5: au lieu d'exécuter CMD, créez un raccourci sur votre bureau en appelant CDM.exe. Cliquez ensuite avec le bouton droit sur le raccourci et sélectionnez "Exécuter en tant qu'administrateur".

  • À l'étape 6: Ignorez la première version proposée de la commande et exécutez la seconde, celle avec le paramètre --defaults-file

  • Une fois la commande exécutée, si tout va bien, la fenêtre CMD reste ouverte et la commande de l'étape 6 continue de s'exécuter. Fermez simplement la fenêtre (cliquez sur 'x'), puis forcez la fermeture de MySQl à partir du gestionnaire de tâches.

  • Supprimez le fichier avec les commandes SQL et redémarrez MySQL. Le mot de passe doit être changé maintenant.

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

... changez simplement la version dans le lien (5.5, 5.6, 5.7)

JuanCamilo
la source
3

Dans votre fichier "hostname" .err dans le dossier de données sur lequel MySQL fonctionne, essayez de rechercher une chaîne commençant par:

"Un mot de passe temporaire est généré pour roor @ localhost"

vous pouvez utiliser

less /mysql/data/dir/hostname.err 

puis barre oblique suivie de la chaîne que vous souhaitez rechercher

/"A temporary password"

Appuyez ensuite sur n pour accéder au résultat suivant.

nDCasT
la source
0

Système:

  • CentOS Linux 7
  • mysql Ver 14.14 Distrib 5.7.25

Procédure:

  1. Ouvrez deux sessions shell, en vous connectant à l'une en tant qu'utilisateur root Linux et à l'autre en tant qu'utilisateur non root ayant accès à la mysqlcommande.

  2. Dans votre session racine, arrêtez l'écouteur mysqld normal et démarrez un écouteur qui contourne l'authentification par mot de passe ( remarque: il s'agit d'un risque de sécurité important car toute personne ayant accès à la mysql commande peut accéder à vos bases de données sans mot de passe. Vous pouvez fermer les sessions shell actives et / ou désactivez l'accès au shell avant de faire cela):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. Dans votre session non root, connectez-vous à mysql et définissez le mot de passe root mysql:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. Dans votre session racine, tuez l'instance sans mot de passe de mysqld et restaurez l'écouteur normal de mysqld en service:

    # kill %1
    # systemctl start mysqld

  5. Dans votre session non root, testez le nouveau mot de passe root que vous avez configuré ci-dessus:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>

CODE-REaD
la source
-2

J'ai résolu cela d'une manière différente, cela peut être plus facile pour certains.

Je l'ai fait de cette façon parce que j'ai essayé de démarrer en mode sans échec mais je ne peux pas me connecter avec l'erreur: ERREUR 2002 (HY000): Impossible de se connecter au serveur MySQL local via le socket '/var/run/mysqld/mysqld.sock' (2)

Ce que j'ai fait, c'est de me connecter normalement en tant que root:

$ sudo mysql -u root

Ensuite, j'ai créé un nouveau super utilisateur:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

Puis connectez-vous en tant que myuser

$ mysql -u myuser -p -h localhost

Essayer de changer le mot de passe ne m'a donné aucune erreur mais n'a rien fait pour moi alors j'ai abandonné et recréé l'utilisateur root

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

L'utilisateur root travaille maintenant avec le nouveau mot de passe

Trevorbest
la source
-5

Accédez à phpMyAdmin> config.inc.php> $ cfg ['Servers'] [$ i] ['password'] = '';

user3288185
la source
1
Il n'y a rien dans la question phpmyadmin.
Marquis of Lorne