GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So setzen Sie das MySQL-Root-Benutzerpasswort unter Linux zurück

Haben Sie Ihr MySQL-Root-Benutzerkennwort vergessen? Keine Bange! Diese Anleitung führt Sie durch die Schritte zum Zurücksetzen des MySQL-Root-Benutzerkennworts in Linux-Betriebssystemen. Die unten angegebenen Schritte sollten auch zum Zurücksetzen des MariaDB-Root-Passworts funktionieren.

Wir haben bereits eine Anleitung zum Zurücksetzen des (administrativen) Root-Benutzerpassworts in MySQL veröffentlicht ältere Versionen, z. B. MySQL 5.7. Diese Methode funktionierte jedoch nicht mit der neuen MySQL 8-Version. Wenn Sie das Root-Passwort in MySQL 8 zurücksetzen möchten, befolgen Sie eine der beiden unten angegebenen Problemumgehungen.

Passwort des MySQL-Root-Benutzers unter Linux zurücksetzen

Wie ich bereits erwähnt habe, können wir das MySQL-Root-Passwort auf zwei Arten zurücksetzen.

  • Der generische Weg,
  •  Verwendung von init_file Systemvariable.

1. Die generische Methode zum Zurücksetzen des MySQL-Root-Passworts

Diese Methode funktioniert unabhängig vom verwendeten Betriebssystem. Ich warne Sie, dass es weniger sicher ist weil wir den MySQL-Server mit den --skip-grant-tables starten werden Möglichkeit. Dadurch erhält jeder mit Zugriff auf den Server unbeschränkten Zugriff auf alle Datenbanken .

Stoppen Sie zuerst den MySQL-Dienst mit dem Befehl:

$ sudo systemctl stop mysql

Sie können überprüfen, ob MySQL tatsächlich gestoppt ist mit dem Befehl:

$ sudo systemctl status mysql

Beispielausgabe:

● mysql.service - MySQL Community Server
      Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
      Active: inactive (dead) since Sat 2021-05-29 11:53:08 UTC; 8s ago
     Process: 560 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
     Process: 666 ExecStart=/usr/sbin/mysqld (code=exited, status=0/SUCCESS)
    Main PID: 666 (code=exited, status=0/SUCCESS)
      Status: "Server shutdown complete"
 May 29 10:08:33 ubuntu2004.localdomain systemd[1]: Starting MySQL Community Server…
 May 29 10:08:37 ubuntu2004.localdomain systemd[1]: Started MySQL Community Server.
 May 29 11:53:07 ubuntu2004.localdomain systemd[1]: Stopping MySQL Community Server…
 May 29 11:53:08 ubuntu2004.localdomain systemd[1]: mysql.service: Succeeded.
 May 29 11:53:08 ubuntu2004.localdomain systemd[1]: Stopped MySQL Community Server.

Nun, der MySQL-Dienst läuft nicht.

Starten Sie nun den MySQL-Server ohne Berechtigungsprüfung neu, indem Sie den folgenden Befehl ausführen:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Hier --skip-grant-tables Option ermöglicht es Ihnen, sich ohne Passwort und mit allen Privilegien mit dem MySQL-Datenbankserver zu verbinden. Der --skip-networking Option wird verwendet, um zu verhindern, dass andere Clients eine Verbindung zum Datenbankserver herstellen. Und das kaufmännische Und (& ) Symbol wird verwendet, um den Befehl im Hintergrund auszuführen, sodass Sie die anderen in den nachfolgenden Schritten angegebenen Befehle eingeben können. Bitte beachten Sie, dass der obige Befehl gefährlich ist und Ihr Datenbankserver unsicher und anfällig für Sicherheitsbedrohungen wird. Sie sollten diesen Befehl nur für kurze Zeit ausführen um das Passwort zurückzusetzen.

Möglicherweise wird der folgende Fehler angezeigt:

2021-05-29T12:00:19.991826Z mysqld_safe Logging to '/var/log/mysql/error.log'.
2021-05-29T12:00:19.996942Z mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

Wenn Sie diesen Fehler sehen, erstellen Sie das fehlende Verzeichnis (z. B. /var/run/mysqld ) und legen Sie die entsprechenden Berechtigungen wie unten angegeben fest.

$ sudo mkdir -p /var/run/mysqld
$ sudo chown -R mysql:mysql /var/run/mysqld

Versuchen Sie nun erneut, den MySQL-Server ohne Passwort und mit Root-Rechten zu starten:

$ sudo mysqld_safe --skip-grant-tables --skip-networking &

Als nächstes verbinden Sie sich mit dem mysql-Server mit dem Befehl:

$ mysql

Sie landen im mysql-Shell-Prompt.

 Welcome to the MySQL monitor.  Commands end with ; or \g.
 Your MySQL connection id is 7
 Server version: 8.0.25-0ubuntu0.20.04.1 (Ubuntu)

 Copyright (c) 2000, 2021, Oracle and/or its affiliates.

 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective
 owners.

 Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

Da wir uns angemeldet haben, ohne Grant-Tabellen zu laden (weil wir --skip-grant-tables verwendet haben). Option), können wir ALTER USER nicht verwenden Befehl zum Zurücksetzen des Passworts. Lassen Sie uns also Berechtigungstabellen mit dem Befehl laden:

mysql> FLUSH PRIVILEGES;

Führen Sie nun den folgenden Befehl aus, um das MySQL-Root-Benutzerpasswort zu aktualisieren:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';

Ersetzen Sie im obigen Befehl [email protected]#@! mit eigenem Passwort. Bitte beachten Sie, dass Sie Validate Password aktiviert haben Komponente müssen Sie ein sicheres Passwort verwenden.

Verlassen Sie schließlich die mysql-Eingabeaufforderung:

mysql> exit

Fahren Sie schließlich den laufenden Datenbankserver herunter, den Sie zuvor mit --skip-grant-tables gestartet haben Möglichkeit. Führen Sie dazu Folgendes aus:

$ sudo mysqladmin -u root -p shutdown

Sie werden aufgefordert, Ihren sudo einzugeben Passwort gefolgt von MySQL root Benutzerkennwort, das Sie im vorherigen Schritt festgelegt haben.

[sudo] password for ostechnix: 
Enter password: 
2021-05-29T12:09:38.425737Z mysqld_safe mysqld from pid file /var/lib/mysql/ubuntu2004.localdomain.pid ended
[1]+  Done                    sudo mysqld_safe --skip-grant-tables --skip-networking

Wenn der obige Befehl nicht funktioniert, suchen Sie die .pid file die die Prozess-ID des Servers enthält. Die PID-Datei ist normalerweise unter /var/lib/mysql/ verfügbar oder /var/run/mysqld/ oder /usr/local/mysql/data/ Verzeichnis abhängig von Ihrer Distribution, Ihrem Hostnamen und Ihrer Konfiguration. Im Allgemeinen hat der Dateiname die Erweiterung .pid und beginnt entweder mit mysqld oder den Hostnamen Ihres Systems.

In meinem Fall ist es "/var/lib/mysql/ubuntuserver.pid" .

Also habe ich die Instanz des Datenbankservers mit dem Befehl gestoppt:

$ sudo kill `/var/lib/mysql/ubuntuserver.pid`

Bitte verwenden Sie das Back-Tick um den Dateipfad zu nennen.

Wir können die MySQL-PID auch mit ps finden und grep Befehle wie unten:

$ ps ax | grep mysql

Beispielausgabe:

1930 pts/0 S 0:00 sudo mysqld_safe --skip-grant-tables --skip-networking
1931 pts/0 S 0:00 /bin/sh /usr/bin/mysqld_safe --skip-grant-tables --skip-networking
2091 pts/0 Sl 0:28 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib/mysql/plugin --user=mysql --skip-grant-tables --skip-networking --log-error=/var/log/mysql/error.log --pid-file=ubuntuserver.pid

Beenden Sie es manuell wie unten:

$ sudo kill <PID>

Oder beenden Sie alle MySQL-Dienste:

$ sudo  killall mysql

Starten Sie nun den MySQL-Dienst normal mit dem Befehl:

$ sudo systemctl start mysql

Melden Sie sich jetzt mit dem neuen Passwort beim MySQL-Server an:

$ mysql -u root -p

Beispielausgabe:

2. MySQL-Root-Passwort mit Passwortdatei zurücksetzen

Die andere Möglichkeit zum Zurücksetzen des mysql-Root-Passworts ist die Verwendung von init_file Systemvariable.

Stoppen Sie den MySQL-Dienst:

$ sudo systemctl stop mysql

Erstellen Sie eine Textdatei, zum Beispiel ostechnix.txt :

$ vi ostechnix.txt

Fügen Sie darin die folgende Zeile hinzu:

ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]#@!';

Ersetzen Sie [email protected]#@! mit Ihrem eigenen Passwort in der oberen Zeile. Wenn Sie Validate Password aktiviert haben plugin, sollten Sie ein starkes Passwort angeben. Speichern und schließen Sie die Datei.

Starten Sie nun den MySQL-Server mit der init_file Systemvariable, die auf die ostechnix.txt zeigt Datei:

$ sudo mysqld --init-file=/home/sk/ostechnix.txt &

Dieser Befehl führt den Inhalt von ostechnix.txt aus Datei und aktualisieren Sie [email protected] Kontopasswort mit neuem Passwort, das in ostechnix.txt erwähnt wird Datei und starten Sie schließlich den mysql-Server.

Stoppen Sie jetzt den MySQL-Server und starten Sie ihn normal neu:

$ sudo systemctl stop mysql
$ sudo systemctl start mysql

Löschen Sie schließlich die Passwortdatei, z. B. ostechnix.txt .

$ rm /home/sk/ostechnix.txt

Jetzt können Sie sich mit dem neuen Passwort beim MySQL-Server anmelden, indem Sie den Befehl verwenden:

$ mysql -u root -p

Wir haben auch eine etwas andere Methode zum Zurücksetzen des MySQL-Root-Passworts veröffentlicht. Einzelheiten finden Sie in der folgenden Anleitung:

>> How To Reset Root Password In MySQL 8 On Ubuntu Linux

Schlussfolgerung

In diesem Handbuch haben wir zwei verschiedene Möglichkeiten kennengelernt, um das vergessene MySQL-Root-Benutzerkennwort in Linux-Betriebssystemen zurückzusetzen. Wenn Sie das Benutzerkennwort Ihres Datenbankadministratorkontos verloren haben, können Sie es in wenigen Minuten einfach zurücksetzen.


Linux
  1. So setzen Sie Ihr MySQL-Root-Passwort unter CentOS 6 zurück

  2. So setzen Sie das Root-MySql-Passwort zurück

  3. So setzen Sie das Root-MySql-Passwort zurück

  4. So setzen Sie das MySQL- oder MariaDB-Root-Passwort zurück

  5. Setzen Sie ein MySQL-Root-Passwort zurück

So setzen Sie das Root-Passwort in MySQL 8 unter Ubuntu Linux zurück

So setzen Sie das WordPress-Admin-Passwort über MySQL zurück

Linux-Passwort für WSL vergessen? Hier erfahren Sie, wie Sie es einfach zurücksetzen können

So setzen Sie das MySQL-Root-Passwort zurück

So ändern / setzen Sie das MySQL- oder MariaDB-Root-Passwort zurück

Wie setze ich das MySQL 8.0-Root-Passwort auf Centos 7.x zurück?