3 votes

PHP PDO : SQLSTATE[HY000] [2002] Connexion refusée

J'ai rencontré ce problème avec l'objet de données PHP.

Je ne peux pas me connecter à ma base de données. Voici d'abord mon script PHP :

getMessage();
}
?>

Je suis en train d'utiliser :

  • PHP 7.1.16

  • Nginx 1.13.12-1

  • MySQL 8.0.11-1debian9

Tout en tant que conteneurs Docker.

Un phpinfo() me dit que les pilotes PDO sont chargés comme suit :

Pilotes PDO :

  • sqlite

  • mysql

Versions des pilotes :

  • mysqlnd 5.0.12-dev

  • Bibliothèque SQLite 3.15.1

Je reçois l'erreur :

Une erreur s'est produite : SQLSTATE[HY000] [2002] Connexion refusée

Je peux me connecter à la même base de données via Phpstorm avec le même mot de passe et nom d'utilisateur.

2voto

LukeFilewalker Points 563

Il semble que ce ne soit pas un problème lié à la configuration PHP.

L'erreur Connection refused montre, de mon point de vue, que vous ne pouvez pas établir de connexion du conteneur PHP vers le conteneur mysql.

Vous devez exposer le port 3306 au conteneur du serveur Web afin que le conteneur PHP puisse établir une connexion à la base de données. Si vous avez déjà relié les conteneurs, vous devez utiliser l'adresse IP des conteneurs et non votre boucle locale 127.0.0.1.

Veuillez consulter cette réponse pour plus d'informations sur la façon de connecter les deux conteneurs et comment établir une connexion d'un conteneur php vers un conteneur mysql:
https://stackoverflow.com/a/43128428/1118905

Pour cerner le problème, vous pouvez essayer d'établir une connexion à partir du conteneur PHP via Netcat vers votre hôte de base de données donné.

Par exemple, vous pouvez essayer d'établir une connexion avec les commandes suivantes :

  1. Accédez au conteneur à partir duquel vous voulez tester la connexion.
    docker exec -it bash

  2. Testez d'ouvrir une connexion via netcat (si ce n'est pas déjà disponible, installez-le par exemple via apt)
    nc -vz 127.0.0.1:3306

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X