MySQL-Fehler 1045: Zugriff für Benutzer 'bill'@'localhost' trotz korrekter Anmeldeinformationen verweigert
Beim Versuch, auf eine entfernte MySQL-Datenbank zuzugreifen Über die Befehlszeile können Benutzer gelegentlich auf die Meldung „Fehler 1045: Zugriff verweigert für Benutzer ‚bill‘@‘localhost‘“ stoßen. Dies zeigt an, dass die Verbindung trotz Angabe der korrekten Anmeldeinformationen abgelehnt wurde.
Untersuchung:
Der Benutzer hat einen neuen Benutzer mit dem Namen „bill“ erstellt und dem Benutzer alle erforderlichen Informationen gewährt Berechtigungen und verließ dann das Root-Benutzerkonto. Nachfolgende Versuche, sich als Benutzer „bill“ vom lokalen Computer („localhost“) anzumelden, führen jedoch zu dem Fehler.
Ursache:
Dies kommt häufig vor Das Problem entsteht durch das Vorhandensein eines anonymen Benutzers (ein Benutzer mit einem leeren Benutzernamen und „localhost“ als Host) in der Tabelle „mysql.user“. Bei der Verbindung von „localhost“ priorisiert der Server übereinstimmende Benutzerkonten basierend auf dem spezifischsten Hostnamen oder der spezifischsten IP-Adresse.
Lösung 1: Anonymen Benutzer entfernen
Zur Lösung Um das Problem zu beheben, entfernen Sie den anonymen Benutzer aus der Tabelle „mysql.user“:
DELETE FROM mysql.user WHERE user = '' AND host = 'localhost';
Lösung 2 (Für MySQL-Versionen >= 5.7):
Wenn Sie MySQL Version 5.7 oder höher verwenden, können Sie die Verwendung anonymer Konten über die Variable „skip_name_resolve“ deaktivieren:
SET GLOBAL skip_name_resolve = ON;
Zusätzliche Überlegungen:
Sockel Verbindungen:
Im bereitgestellten Beispiel stellt der Benutzer eine Verbindung über einen Socket her. Es ist wichtig sicherzustellen, dass die Felder „Benutzer“ und „Passwort“ ordnungsgemäß angegeben sind, da alle im Anmeldepfad konfigurierten anonymen Benutzer möglicherweise die bereitgestellten Anmeldeinformationen überschreiben können.
TCP-Verbindungen:
Bei der Verbindung über TCP sollte das Flag -h verwendet werden, um den Hostnamen oder die IP-Adresse anzugeben, im Gegensatz zu localhost:
mysql -u bill -p -hremote_hostname
Leere Benutzernamen:
Einige Client-Bibliotheken verarbeiten leere Benutzernamen nicht ordnungsgemäß. Anstelle von „“ sollte das „@“-Symbol verwendet werden, um einen anonymen Benutzer zu kennzeichnen:
mysql -u'@'localhost'-ppassword
Das obige ist der detaillierte Inhalt vonWarum gibt MySQL trotz korrekter Anmeldeinformationen den Fehler 1045 zurück: Zugriff verweigert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!