Lorsque j'ai utilisé le code mysqld_safe --skip-grant-tables &
mais je reçois 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 le problème :
$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld
Maintenant, j'utilise le même code mysqld_safe --skip-grant-tables &
et obtenir
mysqld_safe Démarrage du démon mysqld avec les bases de données de /var/lib/mysql
Si j'utilise $ mysql -u root
Je vais chercher :
Version du serveur : 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
Copyright (c) 2000, 2017, Oracle et/ou ses affiliés. Tous droits réservés.
Oracle est une marque déposée d'Oracle Corporation et/ou de ses sociétés affiliées. Les autres noms peuvent être des marques commerciales de leurs respectifs.
Tapez "help ;" ou \h pour obtenir de l'aide. Tapez ' \c ' pour effacer la déclaration d'entrée actuelle.
mysql>
Il est maintenant temps de changer de 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 fonctionnalité 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 mysql Root qui peut se connecter de partout, vous devriez également le 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 auquel vous pouvez accéder de partout :
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = '%' AND User = 'root';`enter code here
doivent maintenant quit
à partir de mysql et arrêter/démarrer
FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
maintenant encore ` mysql -u Root -p' et utilisez le nouveau mot de passe pour obtenir
mysql>