So setzen Sie Ihr MySQL- oder MariaDB-Root-Passwort unter Ubuntu zurück 18.04

Einführung

Das Vergessen von Passwörtern geschieht den Besten von uns. Wenn Sie das * root * -Passwort für Ihre MySQL- oder MariaDB-Datenbank vergessen oder verlieren, können Sie trotzdem Zugriff auf das Passwort erlangen und es zurücksetzen, wenn Sie Zugriff auf den Server und ein Benutzerkonto mit + sudo + - Berechtigungen haben.

Dieses Tutorial zeigt, wie Sie das * root * -Passwort für MySQL- und MariaDB-Datenbanken zurücksetzen, die mit dem + apt + - Paketmanager unter Ubuntu 18.04 installiert wurden. Das Verfahren zum Ändern des Root-Passworts hängt davon ab, ob MySQL oder MariaDB installiert ist, sowie von der Standard-Systemkonfiguration, die mit der Distribution oder den Paketen anderer Hersteller geliefert wird. Die Anweisungen in diesem Lernprogramm funktionieren möglicherweise auch mit anderen System- oder Datenbankserverversionen, sie wurden jedoch speziell mit Ubuntu 18.04 und von der Distribution bereitgestellten Paketen getestet.

Voraussetzungen

Um Ihr MySQL- oder MariaDB * root * -Passwort wiederherzustellen, benötigen Sie:

Schritt 1 - Ermitteln der Datenbankversion und Stoppen des Servers

In Ubuntu 18.04 wird entweder MySQL oder MariaDB ausgeführt, ein beliebter Drop-In-Ersatz, der vollständig mit MySQL kompatibel ist. Sie müssen unterschiedliche Befehle verwenden, um das "+ root +" - Kennwort wiederherzustellen, je nachdem, welches davon Sie installiert haben. Befolgen Sie daher die Schritte in diesem Abschnitt, um festzustellen, welchen Datenbankserver Sie ausführen.

Überprüfen Sie Ihre Version mit dem folgenden Befehl:

mysql --version

Wenn Sie MariaDB ausführen, wird in der Ausgabe vor "MariaDB" die Versionsnummer angezeigt:

MariaDB outputmysql  Ver 15.1 Distrib -, for debian-linux-gnu (x86_64) using readline 5.2

Sie sehen die Ausgabe folgendermaßen, wenn Sie MySQL ausführen:

MySQL outputmysql  Ver 14.14 Distrib , for Linux (x86_64) using  EditLine wrapper

Notieren Sie sich die Datenbank, da dies die entsprechenden Befehle bestimmt, die im Rest dieses Lernprogramms zu befolgen sind.

Um das * root * -Kennwort zu ändern, müssen Sie den Datenbankserver herunterfahren. Wenn Sie MariaDB ausführen, können Sie dies mit dem folgenden Befehl tun:

sudo systemctl stop

Fahren Sie für MySQL den Datenbankserver herunter, indem Sie Folgendes ausführen:

sudo systemctl stop

Wenn die Datenbank gestoppt ist, können Sie sie im abgesicherten Modus neu starten, um das Root-Passwort zurückzusetzen.

Schritt 2 - Neustarten des Datenbankservers ohne Berechtigungsprüfung

Wenn Sie MySQL und MariaDB ohne Berechtigungsprüfung ausführen, können Sie mit Root-Berechtigungen auf die Datenbankbefehlszeile zugreifen, ohne ein gültiges Kennwort anzugeben. Zu diesem Zweck müssen Sie verhindern, dass die Datenbank die grant-Tabellen lädt, in denen Informationen zu Benutzerrechten gespeichert sind. Da dies ein gewisses Sicherheitsrisiko darstellt, möchten Sie möglicherweise auch das Netzwerk deaktivieren, um zu verhindern, dass andere Clients eine Verbindung zum vorübergehend anfälligen Server herstellen.

Je nachdem, welchen Datenbankserver Sie installiert haben, unterscheidet sich die Methode zum Starten des Servers, ohne die grant-Tabellen zu laden.

Konfigurieren von MariaDB für den Start ohne Erteilung von Tabellen

Um den MariaDB-Server ohne die Grant-Tabellen zu starten, verwenden wir die Unit-Datei "+ systemd +", um zusätzliche Parameter für den MariaDB-Server-Daemon festzulegen.

Führen Sie den folgenden Befehl aus, mit dem die von MariaDB beim Start verwendete Umgebungsvariable MYSQLD_OPTS festgelegt wird. Die Optionen + - überspringen-gewähren-Tabellen und` + - überspringen-vernetzen` weisen MariaDB an, zu starten, ohne die gewährten Tabellen oder Netzwerkfunktionen zu laden:

sudo systemctl set-environment MYSQLD_OPTS=""

Dann starte den MariaDB Server:

sudo systemctl start mariadb

Dieser Befehl erzeugt keine Ausgabe, startet jedoch den Datenbankserver unter Berücksichtigung der neuen Einstellungen der Umgebungsvariablen neu.

Sie können sicherstellen, dass es mit + sudo systemctl status mariadb + gestartet wurde.

Jetzt sollten Sie in der Lage sein, sich als MariaDB * root * Benutzer mit der Datenbank zu verbinden, ohne ein Passwort anzugeben:

sudo mysql -u root

Sie sehen sofort eine Eingabeaufforderung für die Datenbankshell:

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

MariaDB [(none)]>

Nachdem Sie nun Zugriff auf den Datenbankserver haben, können Sie das Kennwort * root * wie in Schritt 3 gezeigt ändern.

Konfiguration von MySQL für den Start ohne Tabellengewährung

Um den MySQL-Server ohne seine Grant-Tabellen zu starten, müssen Sie die systemd-Konfiguration für MySQL so ändern, dass beim Start zusätzliche Befehlszeilenparameter an den Server übergeben werden.

Führen Sie dazu den folgenden Befehl aus:

sudo systemctl edit mysql

Dieser Befehl öffnet eine neue Datei im + nano + - Editor, mit der Sie die Service-Overrides von MySQL bearbeiten können. Diese ändern die Standarddienstparameter für MySQL. Diese Datei ist leer, fügen Sie also den folgenden Inhalt hinzu:

MySQL-Dienst überschreibt

[Service]
ExecStart=
ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid

Die erste "+ ExecStart " - Anweisung löscht den Standardwert, während die zweite " systemd +" - Anweisung den neuen Startbefehl enthält, der Parameter zum Deaktivieren des Ladens der Grant-Tabellen und der Netzwerkfunktionen enthält.

Drücken Sie + CTRL-x +, um die Datei zu verlassen, dann + Y +, um die vorgenommenen Änderungen zu speichern, und + ENTER +, um den Dateinamen zu bestätigen.

Laden Sie die + systemd + - Konfiguration neu, um diese Änderungen zu übernehmen:

sudo systemctl daemon-reload

Starten Sie nun den MySQL Server:

sudo systemctl start mysql

Der Befehl zeigt keine Ausgabe an, aber der Datenbankserver wird gestartet. Die Grant-Tabellen und das Netzwerk werden nicht aktiviert.

Stellen Sie als Root-Benutzer eine Verbindung zur Datenbank her:

sudo mysql -u root

Sie sehen sofort eine Eingabeaufforderung für die Datenbankshell:

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

mysql>

Nachdem Sie nun Zugriff auf den Server haben, können Sie das Passwort * root * ändern.

Schritt 3 - Ändern des Root-Passworts

Der Datenbankserver wird jetzt in einem eingeschränkten Modus ausgeführt. Die Grant-Tabellen werden nicht geladen und es ist keine Netzwerkunterstützung aktiviert. Auf diese Weise können Sie auf den Server zugreifen, ohne ein Kennwort anzugeben. Sie können jedoch keine Befehle ausführen, die Daten ändern. Um das * root * -Kennwort zurückzusetzen, müssen Sie die Grant-Tabellen laden, nachdem Sie Zugriff auf den Server erhalten haben.

Weisen Sie den Datenbankserver an, die Grant-Tabellen mit dem Befehl + FLUSH PRIVILEGES + neu zu laden.

FLUSH PRIVILEGES;

Sie können jetzt das Passwort * root * ändern. Die Methode, die Sie verwenden, hängt davon ab, ob Sie MariaDB oder MySQL verwenden.

Ändern des MariaDB-Passworts

Wenn Sie MariaDB verwenden, führen Sie die folgende Anweisung aus, um das Kennwort für das * root * -Konto festzulegen. Ersetzen Sie dabei "+ new_password +" durch ein starkes neues Kennwort, an das Sie sich erinnern werden.

UPDATE mysql.user SET password = PASSWORD('') WHERE user = '';

Diese Ausgabe zeigt an, dass sich das Passwort geändert hat:

OutputQuery OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MariaDB ermöglicht die Verwendung benutzerdefinierter Authentifizierungsmechanismen. Führen Sie daher die folgenden beiden Anweisungen aus, um sicherzustellen, dass MariaDB den Standardauthentifizierungsmechanismus für das neue Kennwort verwendet, das Sie dem * root * -Konto zugewiesen haben:

UPDATE mysql.user SET authentication_string = '' WHERE user = '';
UPDATE mysql.user SET plugin = '' WHERE user = '';

Zu jeder Anweisung wird die folgende Ausgabe angezeigt:

OutputQuery OK, 0 rows affected (0.01 sec)
Rows matched: 1  Changed: 0  Warnings: 0

Das Passwort ist jetzt geändert. Geben Sie "+ exit +" ein, um die MariaDB-Konsole zu beenden, und fahren Sie mit Schritt 4 fort, um den Datenbankserver im normalen Modus neu zu starten.

Ändern des MySQL-Passworts

Führen Sie für MySQL die folgende Anweisung aus, um das Passwort des * root * -Nutzers zu ändern. Ersetzen Sie dabei + new_password + durch ein sicheres Passwort, das Sie sich merken werden:

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

In dieser Ausgabe wird angezeigt, dass das Kennwort erfolgreich geändert wurde:

OutputQuery OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

MySQL ermöglicht die Verwendung benutzerdefinierter Authentifizierungsmechanismen. Führen Sie daher die folgende Anweisung aus, um MySQL anzuweisen, seinen Standardauthentifizierungsmechanismus zur Authentifizierung des * root * -Benutzers mit dem neuen Kennwort zu verwenden:

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = '';

Die Ausgabe ähnelt dem vorherigen Befehl:

OutputQuery OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

Das Passwort ist jetzt geändert. Beenden Sie die MySQL-Konsole, indem Sie "+ exit +" eingeben.

Lassen Sie uns die Datenbank im normalen Betriebsmodus neu starten.

Schritt 4 - Zurücksetzen Ihres Datenbankservers auf die normalen Einstellungen

Um den Datenbankserver im normalen Modus neu zu starten, müssen Sie die vorgenommenen Änderungen rückgängig machen, damit das Netzwerk aktiviert und die Grant-Tabellen geladen werden. Auch hier hängt die von Ihnen verwendete Methode davon ab, ob Sie MariaDB oder MySQL verwendet haben.

Deaktivieren Sie für MariaDB die zuvor festgelegte Umgebungsvariable + MYSQLD_OPTS +:

sudo systemctl unset-environment MYSQLD_OPTS

Starten Sie dann den Dienst mit + systemctl + neu:

sudo systemctl restart mariadb

Entfernen Sie für MySQL die geänderte systemd-Konfiguration:

sudo systemctl revert mysql

Es wird eine Ausgabe ähnlich der folgenden angezeigt:

OutputRemoved /etc/systemd/system/mysql.service.d/override.conf.
Removed /etc/systemd/system/mysql.service.d.

Laden Sie dann die systemd-Konfiguration neu, um die Änderungen zu übernehmen:

sudo systemctl daemon-reload

Starten Sie abschließend den Dienst neu:

sudo systemctl restart mysql

Die Datenbank wird jetzt neu gestartet und befindet sich wieder in ihrem normalen Zustand. Stellen Sie sicher, dass das neue Passwort funktioniert, indem Sie sich als Benutzer * root * mit einem Passwort anmelden:

mysql -u root

Sie werden aufgefordert, ein Passwort einzugeben. Geben Sie Ihr neues Passwort ein und Sie erhalten erwartungsgemäß Zugriff auf die Datenbank-Eingabeaufforderung.

Fazit

Sie haben den Administratorzugriff auf den MySQL- oder MariaDB-Server wiederhergestellt. Stellen Sie sicher, dass das von Ihnen gewählte neue Passwort sicher und sicher ist, und bewahren Sie es an einem sicheren Ort auf.

Weitere Informationen zur Benutzerverwaltung, zu Authentifizierungsmechanismen oder zum Zurücksetzen des Datenbankkennworts für andere Versionen von MySQL oder MariaDB finden Sie in der offiziellen MySQL documentation oder https: // mariadb.com/kb/en/library/documentation/[MariaDB documentation].