MySQL-Root-Passwort konnte nicht zurückgesetzt werden, alles versucht

9

Lassen Sie uns zunächst klarstellen, dass ich alle Fragen von Ask Ubuntu zu diesem Problem gelesen und alle Schritte aus den offiziellen Dokumenten befolgt habe:

help.ubuntu.com

dev.mysql.com

Ich benutze Ubuntu 16.04.1 LTS

Bevor jemand etwas vorschlägt, das ich wahrscheinlich bereits versucht habe, werde ich zeigen, was ich getan habe:

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

MySQL wurde korrekt gestoppt.

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

Hier weiß ich nicht, ob das funktioniert hat oder nicht, also folge ich trotzdem den Schritten.

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:/#

Es scheint, dass es nicht funktioniert, da der Dienst nicht gestartet wird. Da ich mit den nächsten Schritten nicht fortfahren kann, versuche ich die andere Methode (Bereinigen).

Nach der Verwendung:

sudo apt-get --purge remove
sudo apt-get install

Ich versuche den nächsten Schritt:

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:/#

Da dies auch nicht funktioniert, habe ich andere im MySQL-Web erwähnte Methoden ausprobiert:

Also töte ich den MySQL-Prozess wie dort gezeigt und benutze ihn dann

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:/#

Jetzt, als ich keine Optionen mehr hatte, probiere ich auch eine andere Methode aus, die hier auf Ask Ubuntu erwähnt wird:

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:/#

Und jetzt habe ich wirklich keine Optionen mehr, daher sind alle Vorschläge willkommen.

Ilovelinux
quelle

Antworten:

16

Ich hatte das gleiche Problem und löste es, indem ich diese Zeile ausführte:

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

vor dem Ausführen dieser Zeile:

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

Für mich haben diese Schritte besser funktioniert.

Ich denke, es gibt einen saubereren Weg, dies zu tun, aber für mich war es eine schnelle und effiziente Problemumgehung.

Odradek
quelle
1
thx, das hat den Trick gemacht;)
Ilovelinux
Es passiert auf MySQL 5.7. Wenn Sie den MySQL-Dienst beenden, wird / var / run / mysqld entfernt und neu erstellt, wenn Sie den Dienst erneut starten.
Capy
1

Ich konnte MySQL nicht dazu bringen, neu zu installieren, egal was ich versuchte. Am Ende musste ich nur versuchen, das Passwort zurückzusetzen.

Ich musste diesen Weg unter Ubuntu 16.04.1 LTS gehen. Ich verbrachte eine Stunde oder mehr versuchen , alle anderen Vorschläge von MySql Website alles über SO sowie die AskUbuntu Q & A, ich habe es endlich mit Arbeits:

Hinweis: während es root - Passwort für den Benutzer gezeigt eingeben, ich habe nicht das Original - Passwort , so ich habe Geben Sie einfach das gleiche Passwort ein, das als neues Passwort verwendet werden soll.

Hinweis: Es gab nur /var/log/mysqld.log /var/log/mysql/error.log. Beachten Sie

auch, dass dies bei mir nicht funktioniert hat:
sudo dpkg-reconfigure mysql-server-5.7

Auch nicht:
sudo dpkg-reconfigure --force mysql-server-5.5

MySQL-Dienstverzeichnis erstellen .
sudo mkdir /var/run/mysqld

Geben Sie dem MySQL-Benutzer die Berechtigung, in das Dienstverzeichnis zu schreiben.
sudo chown mysql: /var/run/mysqld

Dann:

  1. töte die aktuelle mysqld pid
  2. Führen Sie mysqld mit sudo / usr / sbin / mysqld & aus
  3. run / usr / bin / mysql_secure_installation

    Ausgabe von mysql_secure_installation

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

    Sichern der MySQL-Serverbereitstellung.

    Passwort für Benutzer root eingeben:

    Mit VALIDATE PASSWORD PLUGIN können Kennwörter getestet und die Sicherheit verbessert werden. Es überprüft die Stärke des Kennworts und ermöglicht es den Benutzern, nur die Kennwörter festzulegen, die sicher genug sind. Möchten Sie das VALIDATE PASSWORD Plugin einrichten?

    Drücken Sie y | Y für Ja, eine andere Taste für Nein: Nein. Vorhandenes Kennwort für root verwenden. Passwort für root ändern? ((Drücken Sie y | Y für Ja, eine andere Taste für Nein): y

    Neues Kennwort:

    Neues Kennwort erneut eingeben: Standardmäßig verfügt eine MySQL-Installation über einen anonymen Benutzer, sodass sich jeder bei MySQL anmelden kann, ohne dass ein Benutzerkonto für ihn erstellt werden muss. Dies ist nur zum Testen gedacht und um die Installation etwas reibungsloser zu gestalten. Sie sollten sie entfernen, bevor Sie in eine Produktionsumgebung wechseln.

    Anonyme Benutzer entfernen? (Drücken Sie y | Y für Ja, eine andere Taste für Nein): y Erfolgreich.

    Normalerweise sollte root nur von 'localhost' aus eine Verbindung herstellen dürfen. Dies stellt sicher, dass jemand das Root-Passwort aus dem Netzwerk nicht erraten kann.

    Remote-Login aus der Ferne nicht zulassen? (Drücken Sie y | Y für Ja, eine andere Taste für Nein): y Erfolgreich.

    Standardmäßig wird MySQL mit einer Datenbank namens "test" geliefert, auf die jeder zugreifen kann. Dies ist auch nur zum Testen vorgesehen und sollte vor dem Umzug in eine Produktionsumgebung entfernt werden.

    Testdatenbank entfernen und darauf zugreifen? (Drücken Sie y | Y für Ja, eine andere Taste für Nein): y

    • Testdatenbank löschen ... Erfolg.

    • Entfernen von Berechtigungen für die Testdatenbank ... Erfolgreich.

    Durch das erneute Laden der Berechtigungstabellen wird sichergestellt, dass alle bisher vorgenommenen Änderungen sofort wirksam werden.

    Berechtigungstabellen jetzt neu laden? (Drücken Sie y | Y für Ja, eine andere Taste für Nein): y Erfolgreich.

    Alles erledigt!

JGlass
quelle
0

Ich hatte das gleiche Problem und löste es mit:

# /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';

(Hier befindet sich authentication_stringdas Passwortfeld.)

Rajani
quelle