Heim >Datenbank >MySQL-Tutorial >Warum erhalte ich den MySQL-Fehler 1698 (Zugriff verweigert) und wie kann ich ihn beheben?

Warum erhalte ich den MySQL-Fehler 1698 (Zugriff verweigert) und wie kann ich ihn beheben?

Barbara Streisand
Barbara StreisandOriginal
2024-12-25 13:12:12429Durchsuche

Why Am I Getting MySQL Error 1698 (Access Denied) and How Can I Fix It?

Behandlung von Fehler 1698 während der MySQL-Anmeldung

Benutzer stoßen möglicherweise auf FEHLER 1698 (28000): Zugriff für Benutzer „root“@ verweigert 'localhost' beim Versuch, sich mit dem Root-Benutzer bei der MySQL-Datenbank anzumelden. Dieser Fehler tritt häufig auf Systemen wie Ubuntu auf, wo MySQL standardmäßig das Unix-Plugin auth_socket zur Authentifizierung verwendet.

Hintergrund: Das Plugin auth_socket verlässt sich bei der Authentifizierung auf die Anmeldeinformationen des Systembenutzers. Durch Abfragen der mysql.user-Tabelle können Sie überprüfen, ob der Root-Benutzer bei diesem Plugin registriert ist:

SELECT User, Host, plugin FROM mysql.user;

Mögliche Lösungen:

Option 1 : Root-Benutzer für die Verwendung des mysql_native_password-Plugins konfigurieren
Bei dieser Methode wird der Root-Benutzer so eingestellt, dass er das traditionellere verwendet mysql_native_password-Plugin:

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
sudo service mysql restart

Option 2: Erstellen Sie einen neuen Datenbankbenutzer (empfohlen)
Ein alternativer Ansatz besteht darin, einen neuen Datenbankbenutzer mit Ihrem Systembenutzernamen zu erstellen. Dies bietet eine einfacher zu verwaltende und sicherere Option:

CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
FLUSH PRIVILEGES;
sudo service mysql restart

Beachten Sie, dass Sie bei Option 2 eine Verbindung zu MySQL unter Verwendung Ihres Systembenutzernamens herstellen:

mysql -u YOUR_SYSTEM_USER

Zusätzliche Überlegungen:

  • In MySQL-Versionen 8.x.x wurde das auth_socket-Plugin möglicherweise durch ersetzt caching_sha2_password. Informationen zum geeigneten Authentifizierungs-Plugin und zur Anmeldemethode finden Sie in der MySQL-Dokumentation.
  • In Debian 9 (Stretch) wird das auth_socket-Plugin in unix_socket umbenannt. Passen Sie den SQL-Befehl entsprechend an.

Das obige ist der detaillierte Inhalt vonWarum erhalte ich den MySQL-Fehler 1698 (Zugriff verweigert) und wie kann ich ihn beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn