So lösen Sie den MySQL-Fehler 1698: Eine detaillierte Anleitung

Veröffentlicht: 2024-03-28

Haben Sie versucht, als Root-Benutzer auf die MySQL-Datenbank zuzugreifen, sind aber auf die Fehlermeldung „MySQL-Fehler 1698 (28000): Zugriff verweigert für Benutzer ‚root‘@‘localhost‘“ gestoßen? Dies ist ein häufiges Problem für Leute, die mit MySQL arbeiten. Es verhindert den Zugriff auf die Datenbank über verschiedene Mittel, einschließlich Terminal-, PHPMyAdmin- oder MySQL-Clientschnittstellen. Dieser Fehler tritt häufiger als bei jedem anderen Betriebssystem auf und tritt bei Ubuntu-Systembenutzern auf.

In diesem ausführlichen Leitfaden besprechen wir die Hauptursachen für den MySQL-Fehler 1698 und bieten wirksame Lösungen zur Behebung dieses Fehlers. Beginnen wir also mit der Lösung dieses Problems. Anschließend erhalten Sie wieder schnellen Zugriff auf Ihre MySQL-Datenbank.

Was ist der MySQL-Fehler 1698 und die Gründe dafür?

Hinter dem MySQL-Fehler 1698 steckt das Problem, wie MySQL prüft, ob jemand, der versucht, es als „Root“-Benutzer zu verwenden, dazu berechtigt ist. Bei einigen Betriebssystemen verwendet MySQL kein reguläres Passwort für den „Root“-Benutzer. Das MySQL-Root-Konto überprüft es über das Plugin auth_socket oder unix_socket. Dieses Plugin basiert auf den Anmeldeinformationen des Betriebssystems und nicht auf einem Kennwort. Es prüft, ob die Benutzerverbindungsanforderung über einen UNIX-Socket eingeht, und validiert dann den Benutzernamen anhand der Anmeldeinformationen des Systems.

Wenn Sie nicht als „Root“-Benutzer bei Ihrem Betriebssystem angemeldet sind, lässt MySQL Ihnen grundsätzlich keinen Zugriff als „Root“-Benutzer zu. Diese Methode soll die Sache sicherer und einfacher machen, allerdings kann dabei der Fehler 1698 auftreten.

Dieser Fehler tritt auf, weil ein Konflikt zwischen den Sicherheitsmaßnahmen und den Benutzererwartungen besteht. Das Verstehen der Ursache des Fehlers ist der erste Schritt zur Behebung des Fehlers 1698 und zur Suche nach Möglichkeiten, die Datenbank sowohl sicher als auch benutzerfreundlich zu halten.

 > MySQL-Fehler 1698 (28000)

Als wir mehr über den MySQL-Fehler 1698 erfahren, stellen wir fest, dass die Hauptursache nicht das traditionelle Konzept von Passwörtern ist, sondern eine einzigartige Authentifizierungsmethode. Diese Methode beinhaltet das Plugin auth_socket oder unix_socket, das wir oben angesprochen haben.

Im Grunde kümmert sich dieses Plugin überhaupt nicht um Passwörter. Stattdessen wird überprüft, ob die Verbindung über einen UNIX-Socket hergestellt wird, und anschließend wird überprüft, ob der Benutzername, der versucht, eine Verbindung herzustellen, mit dem im System angemeldeten Benutzernamen übereinstimmt.

Dieser Authentifizierungsansatz ist eine Abkehr von der passwortbasierten Sicherheit. Es zeigt, wie das Plugin funktioniert, um Personen basierend auf den Benutzerinformationen vom Computersystem Zutritt zu verschaffen.

Wie behebt man den MySQL-Fehler 1698?

Lassen Sie uns Lösungen besprechen, die gegen den MySQL-Fehler 1698 wirken und in Zukunft effektive Datenbankinteraktionen gewährleisten.

Wechseln Sie den Benutzer zum mysql_native_password-Plugin

Der Wechsel zum Plugin „ mysql_native_password “ ist eine einfache Lösung. Dieser Ansatz bedeutet, das Authentifizierungs-Plugin für den Root-Benutzer auf „ mysql_native_password“ zu aktualisieren . Sie sollten die Plugin-Einstellung des Root-Benutzers ändern und diese Änderungen dann anwenden, indem Sie die MySQL-Berechtigungen löschen. Diese Methode stellt den Zugriff wieder her und stellt eine sofortige Lösung für das Problem der Zugriffsverweigerung dar.

  1. Greifen Sie als privilegierter Benutzer auf die MySQL-Shell zu.
  2. Verwenden Sie diesen Befehl, um die Authentifizierungsmethode des Root-Benutzers auf „ mysql_native_password “ umzustellen:
 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_new_password';

3. Löschen Sie die Berechtigungen, um die Änderungen anzuwenden:

 FLUSH-PRIVILEGIEN;

4. Beenden Sie die MySQL-Shell und versuchen Sie erneut, sich als Root-Benutzer anzumelden.

Systembenutzer zur MySQL-Benutzertabelle hinzufügen

Das Hinzufügen eines Systembenutzers zur MySQL-Benutzertabelle und die Aktivierung des Plugins „ auth_socket “ erhöhen die Sicherheit. Diese Methode nutzt die Authentifizierung auf Betriebssystemebene und ermöglicht den Datenbankzugriff auf eine Weise, die sicherer ist als die herkömmliche Kennwortauthentifizierung. Dieser Ansatz minimiert das Risiko, das mit der direkten Verwendung des Root-Kontos für Datenbankvorgänge verbunden ist.

  1. Melden Sie sich beim MySQL-Server als Root-Benutzer oder als ein anderer Benutzer mit ausreichenden Rechten an.
  2. Erstellen Sie einen neuen Benutzer und setzen Sie die Authentifizierung auf „ auth_socket “:
 ERSTELLEN SIE BENUTZER 'Ihr_System_Benutzer'@'localhost' IDENTIFIZIERT MIT auth_socket;

3. Gewähren Sie dem neuen Benutzer die erforderlichen Berechtigungen:

 GEWÄHREN SIE ALLE PRIVILEGIEN FÜR *.* AN „Ihr_Systembenutzer“@„localhost“ MIT GRANT OPTION;

4. Löschen Sie die Berechtigungen, um die Änderungen anzuwenden:

 FLUSH-PRIVILEGIEN;

5. Melden Sie sich mit dem neuen Systembenutzer bei MySQL an und verwenden Sie zur Authentifizierung die Anmeldeinformationen des Betriebssystems.

Deaktivieren Sie die unix_socket-Authentifizierung

Wenn Sie eine schnelle Problemumgehung wünschen, kann die Deaktivierung der UNIX-Socket-Authentifizierung eine sofortige, wenn auch weniger sichere Lösung darstellen. Mit dieser Methode kann sich der Root-Benutzer mit Standard-Passwortprotokollen anmelden, indem das UNIX-Socket-Plugin aus der Authentifizierungsmethode des Root-Benutzers entfernt wird. Während dadurch das Zugriffsproblem gelöst wird, sollten Sie die möglichen Kompromisse bei der Sicherheit berücksichtigen.

  1. Öffnen Sie die MySQL-Konsole.
  2. Aktualisieren Sie den Root-Benutzer, um die UNIX-Socket-Authentifizierung zu deaktivieren:
 UPDATE mysql.user SETplugin='' WHERE User='root';

3. Löschen Sie die Berechtigungen, um die Änderungen zu speichern:

 FLUSH-PRIVILEGIEN;

Jetzt kann sich der Root-Benutzer mithilfe eines Kennworts authentifizieren und so die UNIX-Socket-Methode umgehen.

Abschluss

Der MySQL-Fehler 1698 ist wie eine Blockade auf Ihrem Weg, wenn Sie versuchen, auf Ihre Datenbank zuzugreifen. Unabhängig davon, ob dieser Fehler bei Ihnen zum ersten Mal auftritt oder ob Sie zukünftige Vorkommnisse verhindern möchten, ist es von entscheidender Bedeutung, die Besonderheiten dieses Fehlers zu verstehen. Um den MySQL-Fehler 1698 zu beheben, benötigen Sie ein umfassendes Verständnis der Authentifizierungsarchitektur von MySQL, insbesondere wenn diese mit Sicherheitspraktiken auf Betriebssystemebene überschneidet, wie sie beispielsweise in Ubuntu-Systemen beobachtet werden.

Der MYSQL-Fehler 1698, der dem Root-Benutzer den Zugriff verweigert, erfordert eine durchdachte Konfiguration der Authentifizierungsmechanismen innerhalb von MySQL.

Wir haben ausführliche Lösungsmethoden besprochen, die von der Änderung des Authentifizierungs-Plugins auf „ mysql_native_password “ über die Integration von Systembenutzern in die Benutzertabelle von MySQL mit dem Plugin „ auth_socket “ bis hin zur vollständigen Deaktivierung der UNIX_socket-Authentifizierung reichen. Jede Lösung bietet einen einzigartigen Ansatz zur Umgehung des Fehlers, der auf unterschiedliche Sicherheitslagen und Verwaltungspräferenzen zugeschnitten ist. Für welche Variante Sie sich entscheiden, hängt von der Sicherheitsstufe ab, die Sie mit Ihrem Datenbankverwaltungssystem erreichen möchten.