Mysql
 sql >> Base de données >  >> RDS >> Mysql

SQLSTATE[HY000] [1045] Accès refusé pour l'utilisateur 'nom d'utilisateur'@'localhost' en utilisant CakePHP

Ce message d'erreur signifie généralement que soit le mot de passe que nous utilisons ne correspond pas à ce que MySQL pense que le mot de passe devrait être pour l'utilisateur avec lequel nous nous connectons, soit un utilisateur MySQL correspondant n'existe pas (n'a pas été créé).

Dans MySQL, un utilisateur est identifié à la fois par un nom d'utilisateur ("test2") et un hôte ("localhost").

Le message d'erreur identifie l'utilisateur ("test2") et l'hôte ("localhost") valeurs...

  'test2'@'localhost'

Nous pouvons vérifier si l'utilisateur existe, en utilisant cette requête d'un client à partir duquel nous pouvons nous connecter :

 SELECT user, host FROM mysql.user

Nous recherchons une ligne contenant "test2" pour user , et "localhost" pour hôte .

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

Si cette ligne n'existe pas, l'hôte peut être défini sur la valeur générique de % , pour correspondre à tout autre hôte qui ne correspond pas.

Si la ligne existe, le mot de passe peut ne pas correspondre. Nous pouvons changer le mot de passe (si nous sommes connectés en tant qu'utilisateur avec des privilèges suffisants, par exemple root

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

Nous pouvons également vérifier que l'utilisateur a des privilèges sur les objets de la base de données.

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

MODIFIER

Si nous apportons des modifications aux tables de privilèges mysql avec des opérations DML (INSERT, UPDATE, DELETE), ces modifications ne prendront effet que lorsque MySQL relira les tables. Nous pouvons rendre les modifications effectives en forçant une relecture avec un FLUSH PRIVILEGES instruction, exécutée par un utilisateur privilégié.