web-dev-qa-db-fra.com

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

La situation est la suivante: j'essaie d'utiliser une connexion PHP pour connecter ma base de données MySQL qui est sur phpmyadmin. Rien d’extraordinaire à propos de la connexion qui essaie juste de voir si la connexion est réussie ou non. J'utilise MAMP pour héberger la base de données, la connexion que j'essaie d'utiliser est la suivante: 

<?php
$servername = "127.0.0.1";
$username = "root";
$password = "root";

try {
    $conn = new PDO("mysql:Host=$servername;dbname=AppDatabase", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Connected successfully"; 
}
catch(PDOException $e)
{
    echo "Connection failed: " . $e->getMessage();
}
?>

J'utilise postman pour vérifier si la connexion fonctionne, mais je continue à recevoir ce message d'erreur: 

Connexion échouée: SQLSTATE [HY000] [2002] Connexion refusée

Avant de recevoir un message d'erreur de:

La connexion a échoué: SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type

C'est parce que j'avais défini le nom de serveur sur localhost. En changeant l'adresse IP indiquée, la connexion m'a été refusée et je ne sais absolument pas ce qui ne va pas.

Toute aide à ce sujet serait appréciée, merci.

28
Jack Smith

J'ai trouvé la raison pour laquelle la connexion ne fonctionnait pas, c'était parce que la connexion essayait de se connecter au port 8888, alors qu'elle devait se connecter au port 8889.

$conn = new PDO("mysql:Host=$servername;port=8889;dbname=AppDatabase", $username, $password); 

Cela a résolu le problème, bien que la modification du nom du serveur en localhost génère toujours l'erreur.

La connexion a échoué: SQLSTATE [HY000] [2002] Aucun fichier ou répertoire de ce type

Mais il se connecte correctement lorsque l'adresse IP est entrée pour le nom du serveur.

28
Jack Smith

Dans mon cas, le serveur MySQL ne fonctionnait pas. J'ai redémarré le serveur MySQL et le problème a été résolu.

//on ubuntu server
Sudo /etc/init.d/mysql start

Pour éviter les problèmes d'arrêt de MySQL, vous pouvez utiliser l'utilitaire "initctl" dans Ubuntu 14.04 LTS Linux pour vous assurer que le service redémarre en cas d'échec ou de redémarrage. Pensez à parler d'un instantané du volume racine (avec mysql arrêté) avant d'effectuer cette opération à des fins de conservation des données [8]. Vous pouvez utiliser les commandes suivantes pour gérer le service mysql avec l'utilitaire "initctl" avec les opérations d'arrêt et de démarrage.

$ Sudo initctl stop mysql
$ Sudo initctl start mysql

Pour vérifier le bon fonctionnement, vous pouvez vérifier le statut du service et obtenir L'identifiant du processus (pid), simuler un échec en supprimant le processus "mysql" Et vérifier son statut en cours d'exécution avec le nouvel identifiant de processus après parfois (généralement dans la minute) en utilisant les commandes suivantes.

$ Sudo initctl status mysql         # get pid
$ Sudo kill -9 <pid>                # kill mysql process
$ Sudo initctl status mysql         # verify status as running after sometime
0
vinod