Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQLSTATE[HY000] [1045] Zugriff für Benutzer „Benutzername“@„localhost“ mit CakePHP verweigert

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.