107 votes

mysqli_real_connect() : (HY000/2002) : Aucun fichier ou répertoire de ce type

mysqli_real_connect(): (HY000/2002): No such file or directory

Erreur de PhpMyAdmin sur MacOS. Je veux une réponse et je n'ai vraiment aucune idée de ce que je dois faire pour résoudre ce problème.

0 votes

pouvez-vous donner plus d'informations ?

0 votes

Vérifiez si votre serveur MySQL est en cours d'exécution : stackoverflow.com/a/50227592/4684797

143voto

naiz0 Points 711

changer localhost en 127.0.0.1 dans /etc/phpmyadmin/config.inc.php

$cfg['Servers'][$i]['host'] = '127.0.0.1';

La raison en est que pma essaie de se connecter au mysql.socket si vous utilisez localhost. Si vous utilisez 127.0.0.1, PMA établit une connexion TCP qui devrait fonctionner.

7 votes

J'ai été heureux de trouver cette réponse pour faire fonctionner les choses, mais quelle est la vraie solution ? C'est une solution de contournement. Vous devrait être capable d'utiliser localhost .

2 votes

On pourrait le croire, mais apparemment non. En ce qui concerne le paramètre "type de connexion" : "Déprécié depuis la version 4.7.0 : Ce paramètre n'est plus utilisé à partir de la version 4.7.0, car MySQL décide du type de connexion en fonction de l'hôte, ce qui pourrait conduire à des résultats inattendus." Réf : docs.phpmyadmin.net/fr/latest/config.html

0 votes

La "vraie solution" est de lire et de comprendre la documentation de MySQL, puis de modifier vos fichiers de configuration et d'avoir un système dans lequel vous savez ce qui se passe, au lieu de simplement suivre quelques conseils et de tout oublier dès que cela fonctionne. Si vous voulez utiliser localhost vous devez configurer MySQL pour qu'il écoute sur une socket au lieu de TCP/IP. Je recommande toujours cela, lorsque votre base de données est sur la même machine.

30voto

Siraj Points 1372

Ce site a fonctionné pour moi.

Localiser config.sample.inc.php

Changement

$cfg['Servers'][$i]['host'] = 'localhost';

en

$cfg['Servers'][$i]['host'] = '127.0.0.1';

Économisez.

Ensuite, renommez le fichier et supprimez échantillon du nom.

27voto

Abdulla Points 11270

Peut-être que votre serveur SQL a été arrêté

sudo /etc/init.d/mysql start

ou

sudo service mysqld start

et utiliser service mysql status pour vérifier le statut

EDIT ajouté à partir des commentaires :

Utilisez :

sudo systemctl enable mysql 

pour continuer à faire tourner MySQL.

3 votes

service mysqld restart

0 votes

Cela a fonctionné pour moi mais la grande question est de savoir pourquoi cela s'est arrêté ? Parce que ça m'arrive très souvent.

0 votes

@Komi use sudo systemctl enable mysql pour continuer à exécuter MySQL. Désolé pour la réponse tardive. Cela m'a complètement échappé.

22voto

faruq ah Points 161

J'essaie ceci avant

cd /opt/lampp/phpmyadmin

Puis

gedit config.inc.php

Trouvez ceci

$cfg['Servers'][$i]['host'] = 

S'il y a localhost le changer en 127.0.0.1

Note : s'il y a '//', supprimez // avant. $cfg['Servers'][$i]['host']

J'ai vérifié à nouveau http://localhost/phpmyadmin/

dit Mysqli :

"phpMyAdmin a essayé de se connecter au serveur MySQL, et le serveur a a rejeté la connexion. Vous devez vérifier l'hôte, le nom d'utilisateur et le mot de passe dans votre configuration et vous assurer qu'ils correspondent aux les informations données par l'administrateur du serveur MySQL."

J'ouvre à nouveau config.inc.php et j'ai trouvé

$cfg['Servers'][$i]['password'] =

Remplissez le mot de passe avec votre mot de passe

Ça a marché pour moi. Cela peut marcher pour vous aussi.

0 votes

me font gagner beaucoup de temps

1 votes

Depuis octobre 2018, le chemin MAMP devrait être le suivant /Applications/MAMP/bin/phpMyAdmin/config.inc.php . Cela a marché comme un charme :-)

11voto

Vishman Points 133

mysqli_connect() : (HY000/2002) : No such file or directory

Le contexte :

Je voulais juste exécuter quelques tests PHPUnit sur mon Mac, en utilisant Terminal. Certaines des classes que je voulais tester devaient se connecter à une base de données MySQL qui était créée et gérée par PHPMyAdmin, et l'application web que je travaillais fonctionnait bien sur l'hôte local. Ainsi, lorsque j'ai exécuté ces tests, j'ai obtenu l'erreur suivante dans mon terminal :

mysqli_connect(): (HY000/2002): No such file or directory

Solution :

Donc, avec la démangeaison que je devais résoudre et faire mon test, j'ai cherché dans quelques fils de questions-réponses de SO et j'ai essayé. Et une combinaison de changements a fonctionné pour moi.

  1. Localisez votre config.inc.php qui se rapporte à PHPMyAdmin.
  2. Localiser la ligne $cfg['Servers'][$i]['host'] Il se peut que cette ligne ait été commentée par défaut, si c'est le cas, veuillez la décommenter.
  3. Et remplacez cette ligne par la suivante :

$cfg['Servers'][$i]['host'] = '127.0.0.1';

  1. Sauvegardez-le et redémarrez la base de données MySQL depuis votre panneau de contrôle XAMPP (manager-osx).
  2. Changez votre $host dans l'onglet mysqli_connect() méthode à suivre :

$_connection = mysqli_connect(**"localhost: 3306"**, $_mysql_username, $_mysql_password, $_database);

Note : Ce site 3306 est le numéro de mon port MySQL, qui est le port par défaut. Vous devriez vérifier quel est votre numéro de port MySQL réel avant de suivre ces étapes.

Et c'est tout. Pour moi, seule cette série d'étapes a fonctionné et rien d'autre. J'ai exécuté mes tests unitaires et cela fonctionne bien et les données de la base de données ont également été mises à jour correctement selon les tests.

Pourquoi ça marche :

La raison la plus proche que j'ai pu trouver est que cela fonctionne parce que parfois les mysqli_connect nécessite un socket fonctionnel (adresse IP de l'hôte de la base de données ainsi que le numéro de port) de la base de données. Donc, si vous avez commenté la méthode $cfg['Servers'][$i]['host'] = '127.0.0.1'; ou si vous avez défini 'localhost' comme valeur dans cette ligne, le numéro de port est ignoré. Mais si vous voulez utiliser un socket, vous devez utiliser '127.0.0.1' ou le vrai nom d'hôte. (pour moi, il semble que peu importe le numéro de port par défaut que nous avons réellement, nous devons faire les étapes ci-dessus). Lisez ce qui suit lien de PHPMyAdmin pour plus de détails.

J'espère que cela pourra être utile à quelqu'un d'autre.

A la vôtre !

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