sql >> Databáze >  >> RDS >> Mysql

SQLSTATE[HY000] [1045] Přístup odepřen uživateli 'username'@'localhost' pomocí CakePHP

Tato chybová zpráva obvykle znamená, že buď heslo, které používáme, neodpovídá tomu, co si MySQL myslí, že by heslo mělo být pro uživatele, jako kterého se připojujeme, nebo odpovídající uživatel MySQL neexistuje (nebyl vytvořen).

V MySQL je uživatel identifikován jak uživatelským jménem ("test2") a hostitel ("localhost").

Chybová zpráva identifikuje uživatele ("test2") a hostitel ("localhost") hodnoty...

  'test2'@'localhost'

Můžeme zkontrolovat, zda uživatel existuje, pomocí tohoto dotazu od klienta, ze kterého se můžeme připojit:

 SELECT user, host FROM mysql.user

Hledáme řádek, který má "test2" pro uživatele a "localhost" pro hostitel .

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

Pokud tento řádek neexistuje, pak může být hostitel nastaven na hodnotu zástupného znaku % , aby se shodoval s jakýmkoli jiným hostitelem, který se neshoduje.

Pokud řádek existuje, heslo se nemusí shodovat. Můžeme změnit heslo (pokud jsme připojeni jako uživatel s dostatečnými oprávněními, např. root

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

Můžeme také ověřit, zda má uživatel oprávnění k objektům v databázi.

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

UPRAVIT

Pokud provedeme změny v tabulkách oprávnění mysql pomocí operací DML (INSERT, UPDATE, DELETE), tyto změny se neprojeví, dokud MySQL znovu nepřečte tabulky. Změny můžeme účinně provést vynucením opětovného čtení pomocí FLUSH PRIVILEGES příkazu, provedeného privilegovaným uživatelem.



  1. MySQL #1093 - V klauzuli FROM nemůžete určit cílovou tabulku 'dárky' pro aktualizaci

  2. Omezení CHECK v MySQL nefunguje

  3. Vysvětlení operátora MariaDB INTERSECT

  4. MySQL - Odečtení hodnoty z předchozího řádku, seskupit podle