Quand j'ai utilisé le code mysqld_safe --skip-grant-tables &
mais que j'obtiens l'erreur:
mysqld_safe Le répertoire '/ var / run / mysqld' pour le fichier 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 j'obtiens
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'obtiendrai:
Version du serveur: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2017, Oracle et / ou ses affiliés. 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 de commerce de leurs propriétaires respectifs.
Tapez 'help;' ou '\ h' pour obtenir de l'aide. Tapez '\ c' pour effacer l'instruction d'entrée actuelle.
mysql>
Il est maintenant temps de changer le mot de passe:
mysql> use mysql
mysql> describe user;
Lecture des informations de 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 devez également faire:
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
Autre méthode:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = 'localhost' AND User = 'root';
Et si vous avez un compte root auquel vous pouvez accéder de partout:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = '%' AND User = 'root';`enter code here
maintenant besoin quit
de mysql et arrêter / démarrer
FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
maintenant à nouveau `mysql -u root -p 'et utilisez le nouveau mot de passe pour obtenir
mysql>