sql >> Database >  >> RDS >> Mysql

SQLSTATE [HY000] [1045] Toegang geweigerd voor gebruiker 'gebruikersnaam'@'localhost' met behulp van CakePHP

Die foutmelding betekent meestal dat ofwel het wachtwoord dat we gebruiken niet overeenkomt met wat MySQL denkt dat het wachtwoord zou moeten zijn voor de gebruiker waarmee we verbinding maken, of dat er geen overeenkomende MySQL-gebruiker bestaat (is niet aangemaakt).

In MySQL wordt een gebruiker geïdentificeerd door zowel een gebruikersnaam ("test2") en een host ("localhost").

De foutmelding identificeert de gebruiker ("test2") en de host ("localhost") waarden...

  'test2'@'localhost'

We kunnen controleren of de gebruiker bestaat, met behulp van deze vraag van een client waarmee we verbinding kunnen maken:

 SELECT user, host FROM mysql.user

We zijn op zoek naar een rij met "test2" voor gebruiker , en "localhost" voor host .

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

Als die rij niet bestaat, kan de host worden ingesteld op een jokerteken van % , om te matchen met een andere host die geen match is.

Als de rij bestaat, komt het wachtwoord mogelijk niet overeen. We kunnen het wachtwoord wijzigen (als we verbonden zijn als gebruiker met voldoende rechten, bijvoorbeeld root

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

We kunnen ook controleren of de gebruiker privileges heeft voor objecten in de database.

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

BEWERKEN

Als we wijzigingen aanbrengen in mysql-privilegetabellen met DML-bewerkingen (INSERT,UPDATE,DELETE), worden die wijzigingen pas van kracht nadat MySQL de tabellen opnieuw heeft gelezen. We kunnen wijzigingen effectief maken door een herlezing te forceren met een FLUSH PRIVILEGES statement, uitgevoerd door een bevoorrechte gebruiker.



  1. Wat is de beste methode om parameters door te geven aan SQLCommand?

  2. kopieer van de ene database naar de andere met Oracle SQL Developer - verbinding mislukt

  3. Alle PHP-fouten uitvoeren naar de database, niet error_log

  4. Hoe we databases gebruiken in ons dagelijks leven