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

9

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 des documents officiels:

help.ubuntu.com

dev.mysql.com

J'utilise Ubuntu 16.04.1 LTS

Donc, avant que quelqu'un ne 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 quand même les étapes.

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'essaye la prochaine étape:

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 fonctionne pas, j'ai essayé d'autres méthodes mentionnées sur le site mysql:

Donc, je tue le processus mysql comme indiqué là-bas, 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'essaie également 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 n'ai vraiment plus d'options, donc toutes les suggestions sont les bienvenues.

Ilovelinux
la source

Réponses:

16

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 ont mieux fonctionné.

Je pense qu'il existe une façon plus propre de procéder, mais pour moi, c'était une solution rapide et efficace.

odradek
la source
1
thx, qui a fait l'affaire;)
Ilovelinux le
Cela se produit sur mysql 5.7. Lorsque vous arrêtez le service mysql / var / run / mysqld est supprimé et recréé lorsque vous redémarrez le service.
Capy
1

Je n'ai pas pu réinstaller mysql, peu importe ce que j'ai essayé, j'ai fini par avoir juste besoin d'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 pour tout sur SO ainsi que les questions et réponses AskUbuntu, je l'ai finalement fait fonctionner avec:

Remarque: alors qu'il montrait Entrez le mot de passe pour la racine utilisateur, je n'avais pas le mot de passe d'origine, donc je vient de saisir le même mot de passe à utiliser comme nouveau mot de passe.

Remarque: il n'y avait pas /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éer le répertoire de service MySQL.
sudo mkdir /var/run/mysqld

Donnez à l'utilisateur MySQL la permission d'écrire dans le répertoire du service.
sudo chown mysql: /var/run/mysqld

Alors:

  1. tuer le pid mysqld actuel
  2. exécutez mysqld avec sudo / usr / sbin / mysqld &
  3. exécutez / usr / bin / mysql_secure_installation

    Sortie de mysql_secure_installation

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

    Sécurisation du déploiement du serveur MySQL.

    Entrez le mot de passe de 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. Souhaitez-vous configurer le plug-in VALIDATE PASSWORD?

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

    Nouveau mot de passe:

    Entrez à nouveau le nouveau mot de passe: Par défaut, une installation MySQL a un utilisateur anonyme, permettant à quiconque de se connecter à MySQL sans avoir à créer un compte utilisateur. Ceci est uniquement destiné à des tests et à rendre 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, sur n'importe quelle autre touche pour Non): y Succès.

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

    Ne pas autoriser la connexion root à distance? (Appuyez sur y | Y pour Oui, sur n'importe quelle autre touche pour Non): y Succès.

    Par défaut, MySQL est livré avec une base de données nommée 'test' à laquelle tout le monde peut accéder. Ceci 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, sur n'importe quelle autre touche pour Non): y

    • Suppression de la base de données de test ... réussie.

    • Suppression des privilèges sur la base de données de test ... Réussi.

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

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

    Terminé!

JGlass
la source
0

J'ai eu le même problème et l'ai résolu avec:

# /etc/init.d/mysql stop
# service mysql stop
# mkdir -p /var/run/mysqld
# chown mysql:mysql /var/run/mysqld
# mysqld_safe --skip-grant-tables &
# mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=password('1234') where user='root';

(Ici, authentication_stringcontient le champ du mot de passe.)

Rajani
la source