web-dev-qa-db-fra.com

Impossible de réinitialiser le mot de passe root MySQL, tout essayé

Eh bien, clarifions d'abord que j'ai lu toutes les questions de Ask Ubuntu sur ce problème et que j'ai suivi toutes les étapes de la documentation officielle:

help.ubuntu.com

dev.mysql.com

J'utilise Ubuntu 16.04.1 LTS

Donc, avant que quelqu'un suggère quelque chose que j'ai probablement déjà essayé, je vais montrer ce que j'ai fait:

root@localhost:/# Sudo /etc/init.d/mysql stop
[ ok ] Stopping mysql (via systemctl): mysql.service.

MySQL s'est arrêté correctement.

root@localhost:/# Sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
[1] 3316
root@localhost:/#

Ici, je ne sais pas si cela fonctionnait ou non, alors je suis les étapes quand même.

root@localhost:/# mysql -u root
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
root@localhost:/#

Il semble que cela ne fonctionne pas, car le service n'est pas démarré. Comme je ne peux pas continuer avec les étapes suivantes, j'essaie l'autre méthode (purge).

Après avoir utilisé:

Sudo apt-get --purge remove
Sudo apt-get install

J'essaie l'étape suivante:

root@localhost:/# mysqladmin -u root password MyNewPassword
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
root@localhost:/#

Comme cela ne marche pas non plus, j'ai essayé d'autres méthodes mentionnées sur le web mysql:

Donc, je tue le processus mysql comme indiqué ici, puis j'utilise

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &
[1] 5267
root@localhost:/# 2017-02-01T12:47:49.250083Z mysqld_safe Logging to syslog.
2017-02-01T12:47:49.252427Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.254765Z mysqld_safe Logging to '/var/log/mysql/error.log'.

2017-02-01T12:47:49.257045Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

[1]+  Salida 1                mysqld_safe --init-file=/home/me/mysql-init
root@localhost:/#

C'est maintenant que je sortais des options, alors j'ai aussi essayé une autre méthode mentionnée ici sur Ask Ubuntu:

root@localhost:/# Sudo dpkg-reconfigure mysql-server-5.7
Checking if update is needed.
This installation of MySQL is already upgraded to 5.7.17, use --force if you still need to run mysql_upgrade
root@localhost:/#

Et maintenant, je suis vraiment à court d'options, toutes les suggestions sont les bienvenues.

7
Ilovelinux

J'ai eu le même problème et je l'ai résolu en exécutant cette ligne:

$ Sudo mkdir /var/run/mysqld; Sudo chown mysql /var/run/mysqld

avant d'exécuter cette ligne:

root@localhost:/# mysqld_safe --init-file=/home/me/mysql-init &

Pour moi, ces étapes a mieux fonctionné.

Je pense qu'il y a une manière plus propre de faire cela, mais pour moi, c'était une solution de contournement rapide et efficace.

14
odradek

Peu importe ce que j'ai essayé, je ne pouvais pas réinstaller MySQL, mais je devais simplement essayer de réinitialiser le mot de passe.

J'ai dû suivre cette voie sur Ubuntu 16.04.1 LTS. J'ai passé une heure ou plus à essayer toutes les autres suggestions du site Web MySql sur tout ce qui concerne SO ainsi que les questions/réponses AskUbuntu.

Remarque: alors qu'il apparaissait Entrez le mot de passe de l'utilisateur root, je n'avais pas le mot de passe d'origine, alors je viens d'entrer le même mot de passe à utiliser comme nouveau mot de passe.

Remarque: il n'y avait pas de /var/log/mysqld.log uniquement /var/log/mysql/error.log

Notez également que cela n’a pas fonctionné pour moi:
Sudo dpkg-reconfigure mysql-server-5.7

Pas plus que:
Sudo dpkg-reconfigure --force mysql-server-5.5

Crée le répertoire de service MySQL.
Sudo mkdir /var/run/mysqld

Donnez à l’utilisateur MySQL l’autorisation d’écrire dans le répertoire service.
Sudo chown mysql: /var/run/mysqld

Ensuite:

  1. tuer le pid mysqld actuel
  2. lancez mysqld avec Sudo/usr/sbin/mysqld &
  3. lancez/usr/bin/mysql_secure_installation

    Sortie de mysql_secure_installation

    root @ myServer: ~ #/usr/bin/mysql_secure_installation

    Sécuriser le déploiement du serveur MySQL.

    Entrez le mot de passe pour l'utilisateur root:

    VALIDATE PASSWORD PLUGIN peut être utilisé pour tester les mots de passe et améliorer la sécurité. Il vérifie la force du mot de passe et permet aux utilisateurs de définir uniquement les mots de passe suffisamment sécurisés. Voulez-vous installer le plugin VALIDATE PASSWORD?

    Appuyez sur y | Y pour Oui, toute autre touche pour Non: non. Utilisation du mot de passe existant pour root Changer le mot de passe pour root? ((Appuyez sur y | Y pour Oui, toute autre touche pour non): y

    Nouveau mot de passe:

    Ressaisissez le nouveau mot de passe: par défaut, une installation MySQL a un utilisateur anonyme, ce qui permet à quiconque de se connecter à MySQL sans avoir à créer un compte utilisateur. Ceci est uniquement destiné aux tests et à l’installation un peu plus fluide. Vous devez les supprimer avant de passer dans un environnement de production.

    Supprimer les utilisateurs anonymes? (Appuyez sur y | Y pour Oui, toute autre touche pour Non): y Succès.

    Normalement, root ne devrait être autorisé à se connecter qu'à partir de 'localhost'. Cela garantit que personne ne peut deviner le mot de passe root du réseau.

    Interdire la connexion root à distance? (Appuyez sur y | Y pour Oui, toute autre touche pour Non): y Succès.

    Par défaut, MySQL est fourni avec une base de données nommée 'test' accessible à tous. Cela est également destiné uniquement aux tests et doit être supprimé avant de passer dans un environnement de production.

    Supprimer la base de données de test et y accéder? (Appuyez sur y | Y pour Oui, toute autre touche pour Non): y

    • Chute de la base de données de test ... Succès.

    • Suppression des privilèges sur la base de données de test ... Succès.

    Le rechargement des tables de privilèges garantira que toutes les modifications apportées jusqu'ici prendront effet immédiatement.

    Recharger les tables de privilèges maintenant? (Appuyez sur y | Y pour Oui, toute autre touche pour Non): y Succès.

    Terminé!

1
JGlass