Mysql
 sql >> Database >  >> RDS >> Mysql

SQLSTATE[HY000] [1045] Accesso negato per l'utente 'nomeutente'@'localhost' che utilizza CakePHP

Quel messaggio di errore di solito significa che la password che stiamo usando non corrisponde a quella che MySQL pensa che dovrebbe essere la password per l'utente con cui ci stiamo connettendo, oppure un utente MySQL corrispondente non esiste (non è stato creato).

In MySQL, un utente è identificato da un nome utente ("test2") e un host ("localhost").

Il messaggio di errore identifica l'utente ("test2") e l'host ("localhost") valori...

  'test2'@'localhost'

Possiamo verificare se l'utente esiste, utilizzando questa query da un client da cui possiamo connetterci:

 SELECT user, host FROM mysql.user

Stiamo cercando una riga con "test2" per utente e "localhost" per host .

 user     host       
 -------  -----------
 test2     127.0.0.1  cleanup
 test2     ::1        
 test2     localhost  

Se quella riga non esiste, l'host potrebbe essere impostato sul valore jolly di % , per abbinare qualsiasi altro host che non corrisponde.

Se la riga esiste, la password potrebbe non corrispondere. Possiamo cambiare la password (se siamo collegati come utente con privilegi sufficienti, ad es. root

 SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('mysecretcleartextpassword')

Possiamo anche verificare che l'utente abbia i privilegi sugli oggetti nel database.

 GRANT SELECT ON jobs.* TO 'test2'@'localhost' 

MODIFICA

Se apportiamo modifiche alle tabelle dei privilegi mysql con operazioni DML (INSERT, UPDATE, DELETE), tali modifiche non avranno effetto finché MySQL non rileggerà le tabelle. Possiamo rendere effettive le modifiche forzando una rilettura con un FLUSH PRIVILEGES istruzione, eseguita da un utente privilegiato.