Diese Fehlermeldung bedeutet normalerweise, dass entweder das von uns verwendete Passwort nicht mit dem übereinstimmt, was MySQL für das Passwort für den Benutzer hält, als der wir uns verbinden, oder dass kein passender MySQL-Benutzer existiert (nicht erstellt wurde).
In MySQL wird ein Benutzer durch einen Benutzernamen ("test2") und identifiziert ein Host ("localhost").
Die Fehlermeldung identifiziert den Benutzer ("test2") und den Host ("localhost")-Werte...
'test2'@'localhost'
Wir können überprüfen, ob der Benutzer existiert, indem wir diese Abfrage von einem Client verwenden, von dem aus wir eine Verbindung herstellen können:
SELECT user, host FROM mysql.user
Wir suchen nach einer Zeile mit „test2“ für user und "localhost" für host .
user host
------- -----------
test2 127.0.0.1 cleanup
test2 ::1
test2 localhost
Wenn diese Zeile nicht vorhanden ist, kann der Host auf den Platzhalterwert %
gesetzt werden , um jeden anderen Host abzugleichen, der keine Übereinstimmung ist.
Wenn die Zeile vorhanden ist, stimmt das Kennwort möglicherweise nicht überein. Wir können das Passwort ändern (wenn wir als Benutzer mit ausreichenden Rechten verbunden sind, z. B. root
SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('mysecretcleartextpassword')
Wir können auch überprüfen, ob der Benutzer Berechtigungen für Objekte in der Datenbank hat.
GRANT SELECT ON jobs.* TO 'test2'@'localhost'
BEARBEITEN
Wenn wir mit DML-Operationen (INSERT,UPDATE,DELETE) Änderungen an mysql-Berechtigungstabellen vornehmen, werden diese Änderungen erst wirksam, wenn MySQL die Tabellen erneut liest. Wir können Änderungen wirksam machen, indem wir ein erneutes Lesen mit einem FLUSH PRIVILEGES
erzwingen Anweisung, ausgeführt von einem privilegierten Benutzer.