Recherche…


Introduction

Après MySQL 5.7, lorsque nous installons MySQL, nous n'avons parfois pas besoin de créer un compte root ou de donner un mot de passe root. Par défaut, lorsque nous démarrons le serveur, le mot de passe par défaut est stocké dans le fichier mysqld.log . Nous devons nous connecter au système en utilisant ce mot de passe et nous devons le changer.

Remarques

La récupération et la réinitialisation du mot de passe root par défaut à l'aide de cette méthode est applicable uniquement à MySQL 5.7+

Que se passe-t-il lorsque le démarrage initial du serveur

Étant donné que le répertoire de données du serveur est vide:

  • Le serveur est initialisé.
  • Le certificat SSL et les fichiers de clés sont générés dans le répertoire de données.
  • Le plugin validate_password est installé et activé.
  • Le compte superutilisateur 'root' @ 'localhost' est créé. Le mot de passe du superutilisateur est défini et stocké dans le fichier journal des erreurs.

Comment changer le mot de passe root en utilisant le mot de passe par défaut

Pour révéler le mot de passe "root" par défaut:

shell> sudo grep 'temporary password' /var/log/mysqld.log

Modifiez le mot de passe root dès que possible en vous connectant avec le mot de passe temporaire généré et définissez un mot de passe personnalisé pour le compte superutilisateur:

shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

Remarque: le plug-in validate_password de MySQL est installé par défaut. Cela nécessitera que les mots de passe contiennent au moins une lettre majuscule, une lettre minuscule, un chiffre et un caractère spécial, et que la longueur totale du mot de passe soit d'au moins 8 caractères.

réinitialiser le mot de passe root lorsque "/ var / run / mysqld" pour le fichier de socket UNIX n'existe pas "

si j'oublie le mot de passe, j'aurai une erreur.

$ mysql -u root -p    

Entrer le mot de passe:

ERROR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (à l'aide du mot de passe: YES)

J'ai essayé de résoudre le problème en connaissant d'abord le statut:

$ systemctl status mysql.service

mysql.service - Serveur de communauté MySQL chargé: chargé (/lib/systemd/system/mysql.service; activé; paramètre prédéfini du fournisseur: en Actif: actif (en cours d'exécution) depuis le jeu. 2017-06-08 14:31:33 IST; il y a 38s

Ensuite, j'ai utilisé le code mysqld_safe --skip-grant-tables & mais j'ai eu l'erreur:

Le répertoire mysqld_safe '/ var / run / mysqld' pour le fichier de socket UNIX n'existe pas.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

J'ai résolu:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

Maintenant, j'utilise le même code mysqld_safe --skip-grant-tables & et

mysqld_safe Démarrage du démon mysqld avec les bases de données de / var / lib / mysql

Si j'utilise $ mysql -u root j'aurai:

Version du serveur: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle et / ou ses filiales. Tous les droits sont réservés.

Oracle est une marque déposée d'Oracle Corporation et / ou de ses filiales. Les autres noms peuvent être des marques déposées de leurs propriétaires respectifs.

Tapez 'help;' ou '\ h' pour de l'aide. Tapez '\ c' pour effacer la déclaration en cours.

mysql>

Il est maintenant temps de changer le mot de passe:

mysql> use mysql
mysql> describe user;

Lire les informations de la table pour compléter les noms de table et de colonne Vous pouvez désactiver cette fonction pour obtenir un démarrage plus rapide avec -A

Base de données modifiée

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

ou Si vous avez un compte root mysql qui peut se connecter de partout, vous devriez aussi faire:

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

Méthode alternative:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

Et si vous avez un compte root qui peut accéder de partout:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

maintenant besoin de quit mysql et stop / start

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

maintenant à nouveau `mysql -u root -p 'et utiliser le nouveau mot de passe pour obtenir

mysql>



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow