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

Accès refusé pour 'user'@'localhost'

Je ne pense pas que ce soit un problème de port, la demande atteint sa destination. Utilisation de [email protected] fonctionnera lors de la connexion via la ligne de commande (mysql -u root -p ) mais vous ne voulez pas l'utiliser pour vous connecter avec votre code. Gardez à l'esprit que lors de l'établissement de votre connexion, vous devez utiliser host=localhost ou host=127.0.0.1 explicitement. Si vous utilisez l'adresse IP (même sur le même serveur), l'accès vous sera refusé.

[[email protected] ~]# mysql --host=127.0.0.1 --protocol=TCP -u root -p
Enter password:
mysql>
[[email protected] ~]# mysql --host=192.168.1.10 --protocol=TCP -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'hostname' (using password: YES)

Voici les étapes que je vous recommande de suivre :

  1. Créez un utilisateur dédié que vous pouvez utiliser pour vous connecter dans vos scripts.
  2. Si la source du script est le même serveur que MySQL.

    CREATE USER '<user>'@'localhost'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'localhost';
    
  3. Si la connexion est toujours établie à partir du même endroit mais d'un emplacement différent de MySQL, exécutez ce qui suit sur la ligne de commande.

    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'<IP_address>';
    
  4. Si la source de la connexion varie, exécutez la commande suivante.

    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'%';
    

Voici un lien vers la documentation si vous avez des questions.