Мой пользователь базы данных существует, но я все еще получаю (HY000/2002): нет такого файла или каталога

Я пытаюсь установить форумы ванили на моем Mac, и для этого я только что создал базу данных и пользователь из командной строки 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)

Поэтому я пытаюсь подключиться, используя следующий код:

$con=mysqli_connect("localhost","vanilla_user3","vanilla_password","vanilla");
if (mysqli_connect_errno($con)) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

но, к сожалению, я получаю сообщение об ошибке 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

Любая идея, где я ошибаюсь?

Ответ 1

Хорошо, я только нашел решение. Проблема оказалась в том, что хост должен быть не localhost, а 127.0.0.1. Я всегда думал, что localhost и 127.0.0.1 были одинаковыми, но оказалось, что они разные.

Поэтому, возможно, в качестве подсказки для будущих пользователей, всегда используйте ip, когда вы сомневаетесь.

Я желаю вам прекрасного дня!

Ответ 2

У меня была та же проблема, но проблема была связана с файлом php.ini.

Мне пришлось отредактировать эти две строки в /etc/php.ini (или там, где находится ваш php.ini):

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

Перезапустите сервер Apache, чтобы убедиться, что изменения отражены.

sudo apachectl restart

Ответ 3

Скажем, ваш порт MAMP MySQL установлен на 8889, как и по умолчанию. Иногда localhost недостаточно, и в этом случае вы должны поместить туда порт MySQL, чтобы вы делали localhost:8889 или localhost:{whatever your MySQL port number is}. Я до сих пор не знаком с MySQL, поэтому я не знаю причину, но кому-то, кто недавно получил сообщение: Warning: mysqli::mysqli(): (HY000/2002): No such file or directory in... добавление номера порта MySQL на localhost было исправлением для меня.