Wie rufe ich meinen MySQL-Benutzernamen und mein Passwort ab?

158

Ich habe meinen MySQL-Benutzernamen und mein Passwort verloren. Wie rufe ich es ab?

Marcel
quelle

Antworten:

186

Stoppen Sie den MySQL-Prozess.

Starten Sie den MySQL-Prozess mit der Option --skip-grant-tables.

Starten Sie den MySQL-Konsolenclient mit der Option -u root.

Listen Sie alle Benutzer auf.

SELECT * FROM mysql.user;

Passwort zurücksetzen;

UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

Aber NICHT VERGESSEN zu

Stoppen Sie den MySQL-Prozess

Starten Sie den MySQL-Prozess normal (dh ohne die Option --skip-grant-tables).

wenn du fertig bist. Andernfalls kann die Sicherheit Ihrer Datenbank beeinträchtigt werden.

Xenph Yan
quelle
7
Denken Sie, Sie müssen den Dämon nicht neu starten, um normale Benutzer zurückzusetzen. nur "FLUSH PRIVILEGES"; nach dem Aktualisieren des Benutzerpassworts. --skip-grant-tables nur für ein Zurücksetzen des Root-Benutzerpassworts erforderlich! Dies wird im Allgemeinen nicht für ein Zurücksetzen des Standardbenutzers empfohlen.
Amos Folarin
Welche Bedeutung hat die Verwendung des dpkg-reconfigure mysql-server-5.5Befehls zum Zurücksetzen des MySQL-Root-Passworts?
PhillipsK
@Xenph, warum sagen Sie " Starten Sie den MySQL-Konsolenclient mit der Option -u root "? Es macht überhaupt keinen Sinn, dies zu tun, da dies beim -uStarten des Servers ignoriert wird --skip-grant-tables.
Pacerier
15
In MySQL 5.7. * Ist keine Spalte mysql.useraufgerufen password. Verwenden Sie authentication_stringstattdessen.
Adib Aroui
3
Ich fand diese + stackoverflow.com/a/35277160/1604601 sehr hilfreich
Alien Life Form
42

Leider ist Ihr Benutzerpasswort nicht abrufbar. Es wurde mit einem Einweg-Hash gehasht, der, wenn Sie nicht wissen, irreversibel ist. Ich empfehle Xenph Yan oben zu verwenden und einfach ein neues zu erstellen.

Sie können auch das folgende Verfahren aus dem Handbuch verwenden, um das Kennwort für alle MySQL- Root- Konten unter Windows zurückzusetzen:

  1. Melden Sie sich als Administrator bei Ihrem System an.
  2. Stoppen Sie den MySQL-Server, wenn er ausgeführt wird. Wechseln Sie für einen Server, der als Windows-Dienst ausgeführt wird, zum Dienstmanager:

Startmenü -> Systemsteuerung -> Verwaltung -> Dienste

Suchen Sie dann den MySQL-Dienst in der Liste und beenden Sie ihn. Wenn Ihr Server nicht als Dienst ausgeführt wird, müssen Sie möglicherweise den Task-Manager verwenden, um das Beenden zu erzwingen.

  1. Erstellen Sie eine Textdatei und platzieren Sie die folgenden Anweisungen darin. Ersetzen Sie das Passwort durch das Passwort, das Sie verwenden möchten.

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
    FLUSH PRIVILEGES;

    Die Anweisungen UPDATE und FLUSH müssen jeweils in eine einzelne Zeile geschrieben werden. Die UPDATE- Anweisung setzt das Kennwort für alle vorhandenen Stammkonten zurück , und die FLUSH- Anweisung weist den Server an, die Grant-Tabellen erneut in den Speicher zu laden.

  2. Speicher die Datei. In diesem Beispiel heißt die Datei C: \ mysql-init.txt.
  3. Öffnen Sie ein Konsolenfenster, um zur Eingabeaufforderung zu gelangen:

    Startmenü -> Ausführen -> cmd

  4. Starten Sie den MySQL-Server mit der speziellen Option --init-file :

    C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt

    Wenn Sie MySQL an einem anderen Speicherort als C: \ mysql installiert haben , passen Sie den Befehl entsprechend an.

    Der Server führt den Inhalt der Datei aus, die beim Start durch die Option --init-file benannt wurde , und ändert jeden Stamm Kennwort für das Konto.

    Sie können dem Befehl auch die Option --console hinzufügen, wenn die Serverausgabe im Konsolenfenster und nicht in einer Protokolldatei angezeigt werden soll.

    Wenn Sie MySQL mit dem MySQL-Installationsassistenten installiert haben, müssen Sie möglicherweise eine Option --defaults-file angeben :

    C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt

    Die entsprechende Einstellung für die Datei --defaults-file finden Sie im Services Manager:

    Startmenü -> Systemsteuerung -> Verwaltung -> Dienste

    Suchen Sie den MySQL-Dienst in der Liste, klicken Sie mit der rechten Maustaste darauf und wählen Sie die Option Eigenschaften. Das Feld Pfad zur ausführbaren Datei enthält die Einstellung --defaults-file .

  5. Löschen Sie nach erfolgreichem Start des Servers C: \ mysql-init.txt .
  6. Stoppen Sie den MySQL-Server und starten Sie ihn im normalen Modus erneut. Wenn Sie den Server als Dienst ausführen, starten Sie ihn im Fenster Windows-Dienste. Wenn Sie den Server manuell starten, verwenden Sie den normalerweise verwendeten Befehl.

Sie sollten nun in der Lage sein, mit dem neuen Kennwort eine Verbindung zu MySQL als Root herzustellen.

jake
quelle
5
@ Jake - danke für die Antwort. Ich wollte es mit den Daumen hoch geben, aber aus irgendeinem Grund erlaubt mir der Stackoverflow dies aufgrund von Reputationspunkten nicht. Ihre Erklärung "Leider ist Ihr Benutzerpasswort nicht abrufbar. Es wurde mit einem Einweg-Hash gehasht, der, wenn Sie nicht wissen, irreversibel ist" war der Schlüssel zu meinem Verständnis, warum alles andere, was ich auf Google las, mir NUR Anweisungen zum Ändern meines Passworts gab Passwort. Gute Erklärungen sind aufschlussreicher als Anweisungen allein.
dsdsdsdsd
1
@jake Ich kann MySQL nicht in der Serviceliste finden. Bitte sagen Sie mir, was ich tun soll.
1
Warum ist deins mysqld-ntstatt mysqld?
Pacerier
Übrigens, gibt es eine Nicht-Datei-Option von --init-file? (Etwas ähnliches wie der --executeBefehl von mysql.exe .)
Pacerier
34

Eine Verbesserung der nützlichsten Antwort hier:

1] Der
MySQL-Server muss nicht neu gestartet werden. 2] Sicherheitsbedenken für einen MySQL-Server, der mit einem Netzwerk verbunden ist

Der MySQL-Server muss nicht neu gestartet werden.

Verwenden Sie FLUSH PRIVILEGES;nach dem Update die Anweisung mysql.user für die Kennwortänderung.

Die FLUSH-Anweisung weist den Server an, die Grant-Tabellen erneut in den Speicher zu laden, damit er die Kennwortänderung bemerkt.

Damit --skip-grant-optionskann jeder ohne Passwort und mit allen Berechtigungen eine Verbindung herstellen. Da dies unsicher ist, möchten Sie vielleicht

Verwenden Sie --skip-grant-tables in Verbindung mit --skip-network , um zu verhindern, dass Remoteclients eine Verbindung herstellen.

from: reference: resetting-permissions-generic

ThinkingMonkey
quelle
@ThinkingMonkey, Geht dies nicht davon aus, dass der aktuell angemeldete Benutzer Berechtigungen zum Ändern hat mysql.user? Oft ist das jedoch nicht der Fall.
Pacerier
6

Obwohl Sie ein MySQL-Kennwort nicht direkt ohne Bruteforcing wiederherstellen können, gibt es möglicherweise einen anderen Weg: Wenn Sie MySQL Workbench verwendet haben, um eine Verbindung zur Datenbank herzustellen, und die Anmeldeinformationen im "Tresor" gespeichert haben, sind Sie goldrichtig.

Unter Windows werden die Anmeldeinformationen in % APPDATA% \ MySQL \ Workbench \ workbench_user_data.dat gespeichert - verschlüsselt mit CryptProtectData (ohne zusätzliche Entropie). Das Entschlüsseln ist einfach:

std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
    DATA_BLOB inblob { length, input };
    DATA_BLOB outblob;

    if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
            throw std::runtime_error("Couldn't decrypt");
    }

    std::vector<unsigned char> output(length);
    memcpy(&output[0], outblob.pbData, outblob.cbData);

    return output;
}

Oder Sie können diesen DonationCoder-Thread nach Quelle + ausführbarer Datei einer schnellen und schmutzigen Implementierung durchsuchen.

Snemarch
quelle
2
Das war perfekt. Auf dem erwähnten Thread-Snemarch befindet sich eine Exe mit Quellcode, mit der mein in meinem MySQL Workbench-Tresor gespeichertes Benutzerkontokennwort abgerufen werden kann. Obwohl diese anderen Methoden wahrscheinlich auch funktionieren würden, wenn ich Rechte zum Lesen oder Aktualisieren der Benutzertabelle hätte.
RobbZ
Aber relativ gesehen verwenden nur sehr wenige Leute Workbench.
Pacerier
Hier ist eine weitere Implementierung, die nach dem
Erstellen
6

Mach es ohne Ausfallzeit

Führen Sie den folgenden Befehl im Terminal aus, um eine Verbindung zum DBMS herzustellen (Sie benötigen Root-Zugriff):

sudo mysql -u root -p;

Führen Sie das Update-Passwort des Zielbenutzers aus (in meinem Beispiel lautet der Benutzername mousaviund das Passwort muss sein 123456):

UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';  

Zu diesem Zeitpunkt müssen Sie eine Spülung durchführen, um die Änderungen zu übernehmen:

FLUSH PRIVILEGES;

Getan! Sie haben es ohne Unterbrechung oder Neustart des MySQL-Dienstes getan.

SMMousavi
quelle
5

Wenn Sie Root-Zugriff auf den Server haben, auf dem MySQL ausgeführt wird, sollten Sie den MySQL-Server mit diesem Befehl stoppen

sudo service mysql stop

Starten Sie nun MySQL mit diesem Befehl

sudo /usr/sbin/mysqld --skip-grant-tables  --skip-networking &

Jetzt können Sie sich mit mysql anmelden

sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Vollständige Anweisungen finden Sie hier http://www.techmatterz.com/recover-mysql-root-password/

Sajjad Ashraf
quelle
3

Melden Sie sich unter Windows Cmd mit dem vorhandenen Benutzer bei MySQL an:

mysql -u Benutzername -p
Passwort eingeben: ****

Führen Sie dann den folgenden Befehl aus:

mysql> SELECT * FROM mysql.user;

Nach dieser Kopie verschlüsselt md5 Passwort für den entsprechenden Benutzer und es gibt mehrere Online-Passwort entschlüsselte Anwendung im Web verfügbar. Verwenden Sie dieses Entschlüsselungskennwort und verwenden Sie es für die nächste Anmeldung. oder aktualisieren Sie das Benutzerkennwort mit dem fließenden Befehl:

mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

Melden Sie sich dann mit dem neuen Passwort und Benutzer an.

Syeful Islam
quelle
0

Wenn Sie ODBC eingerichtet haben, können Sie das Kennwort aus der ODBC-Konfigurationsdatei abrufen. Dies befindet sich in /etc/odbc.ini für Linux und im Ordner Software / ODBC in der Registrierung unter Windows (es gibt mehrere - möglicherweise ist eine Suche erforderlich).

Stichprobengröße1
quelle
0

Speicher die Datei. In diesem Beispiel heißt die Datei C: \ mysql-init.txt. Es werden administrative Berechtigungen zum Speichern der Datei abgefragt

user12261119
quelle
-1

Obwohl eine strenge, logische, computerwissenschaftliche Interpretation der Op-Frage erforderlich wäre sowohl "Wie ich meinen MySQL-Benutzernamen ab" als auch "Passwort" dachte ich, dass es für jemanden nützlich sein könnte, auch die OP- Interpretation anzusprechen . Mit anderen Worten ...

1) Wie rufe ich meinen MySQL-Benutzernamen ab?

ODER

2) Passwort

Diese letztere Bedingung scheint bereits ausführlich behandelt worden zu sein, so dass ich mich nicht darum kümmern werde. Das Folgende ist eine Lösung für den Fall "Wie erhalte ich meinen MySQL-Benutzernamen" allein. HIH.

Um Ihren MySQL-Benutzernamen zu finden, führen Sie die folgenden Befehle in der MySQL-Shell aus ...

SELECT User FROM mysql.user;

Es wird eine Tabelle aller MySQL-Benutzer gedruckt.

scheinen
quelle
1
Dies ist eine späte Antwort, und Sie sollten diese nur veröffentlichen, wenn sich Ihre Lösung deutlich von der bereits veröffentlichten oder akzeptierten unterscheidet. Es ist in diesem Fall nicht so, dass Ihre Antwort eine akzeptierte dupliziert.
m.cekiera