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é.