web-dev-qa-db-fra.com

Mon utilisateur de base de données existe, mais j'obtiens toujours un (HY000 / 2002): aucun fichier ou répertoire de ce type

J'essaie d'installer des forums Vanilla sur mon Mac, et pour cela je viens de créer une base de données et un utilisateur depuis la ligne de commande mysql:

mysql> CREATE DATABASE Vanilla;
Query OK, 1 row affected (0.00 sec)

mysql> create user 'Vanilla_user3'@'localhost' IDENTIFIED BY 'Vanilla_password';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON * . * TO 'Vanilla_user3'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

J'essaie donc de me connecter en utilisant le code suivant:

$con=mysqli_connect("localhost","Vanilla_user3","Vanilla_password","Vanilla");
if (mysqli_connect_errno($con)) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

mais malheureusement, je reçois une erreur disant Warning: mysqli_connect(): (HY000/2002): No such file or directory in /Users/kramer65/Sites/Vanilla/info.php on line 3 Failed to connect to MySQL: No such file or directory

Une idée où je me trompe?

28
kramer65

D'accord, je viens de trouver la solution. Le problème s'est avéré que l'hôte n'aurait pas dû être localhost, mais 127.0.0.1. J'ai toujours pensé localhost et 127.0.0.1 était le même, mais il s'est avéré différent.

Alors peut-être comme astuce pour les futurs utilisateurs, utilisez toujours l'ip en cas de doute.

Je vous souhaite à tous une belle journée!

101
kramer65

J'ai eu le même problème, mais le problème était lié à php.ini fichier.

J'ai dû éditer ces deux lignes dans /etc/php.ini (ou partout où votre php.ini est situé):

mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock

Redémarrez le serveur Apache pour vous assurer que les modifications sont reflétées.

Sudo apachectl restart
12
mohitmayank

Disons que votre port MAMP MySQL est défini sur 8889 comme il l'est par défaut. Parfois, localhost seul ne suffit pas, auquel cas vous devez également y mettre le port MySQL pour que vous fassiez localhost:8889 Ou localhost:{whatever your MySQL port number is}. Je suis encore nouveau sur MySQL, donc je ne connais pas la raison, mais pour tous ceux qui ont récemment reçu le message: Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in ... l'ajout du numéro de port MySQL sur localhost était la solution pour moi.

5
Adam