Zugriff für Benutzer 'root'@'localhost' aufgrund fehlender Berechtigungen verweigert
Problem:
Benutzer, die versuchen, als Root-Benutzer auf MySQL zuzugreifen, werden mit der Meldung „Zugriff verweigert für Benutzer ‚root‘@‘localhost‘“ konfrontiert. (Passwort verwenden: JA)“-Fehler, der darauf hinweist, dass dem Root-Benutzer die erforderlichen Berechtigungen zum Herstellen einer Verbindung fehlen.
Erklärung:
Standardmäßig MySQL 5.7 und höher verlassen sich in erster Linie auf die Socket-Authentifizierung für lokale Verbindungen. Das bedeutet, dass für den Verbindungsversuch über die Befehlszeile als „sudo mysql“ kein Passwort erforderlich ist. Diese Authentifizierungsmethode gewährt dem Root-Benutzer jedoch keine spezifischen Berechtigungen.
Lösung:
So stellen Sie eine passwortbasierte Verbindung her und gewähren dem Root-Benutzer Berechtigungen:
- Führen Sie „SELECT user, Authentication_string, Plugin, Host FROM mysql.user;“ aus. Abfrage zur Überprüfung der aktuellen Benutzerkonfiguration. Stellen Sie sicher, dass das Authentifizierungs-Plugin für den Root-Benutzer „auth_socket“ ist.
- Führen Sie „ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';“ aus. Anweisung, um die Authentifizierungsmethode des Root-Benutzers von Socket auf Native zu ändern.
- Führen Sie „FLUSH PRIVILEGES;“ aus. Befehl, um sicherzustellen, dass die Änderungen wirksam werden.
- Wiederholen Sie Schritt 1, um zu bestätigen, dass das Authentifizierungs-Plugin des Root-Benutzers in „mysql_native_password“ geändert wurde.
Zusätzliche Überlegungen:
- Das „Current-Root-Password“ sollte durch das ersetzt werden Das Passwort des vorhandenen Root-Benutzers.
- Für MySQL-Versionen vor 5.7 kann die Authentifizierungsmethode „caching_sha2_password“ sein. In diesem Fall verwenden Sie „ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Current-Root-Password';“ Anweisung stattdessen.
- Für MariaDB-Benutzer kann der folgende Befehl verwendet werden, um ein Passwort für den Root-Benutzer festzulegen: „SET PASSWORD FOR 'root'@'localhost' = PASSWORD('manager');"
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in MySQL die Meldung „Zugriff verweigert für Benutzer ‚root'@'localhost'' und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!