Предупреждение: mysqli :: __ construct (): (HY000 / 2002): Нет такого файла или каталога в - PullRequest
1 голос
/ 06 марта 2019

Я полностью застрял, потратив пару дней, пытаясь понять это ...

Я установил веб-сервер Apache (версия 2.4.34) на моей Mac OS под управлением Mojave (10.14.3) и установили текущую версию MySQL Community Server (8.0.15).Оба работают отлично, как я могу определить (из командной строки).У меня установлен PHP 7.1.23.Когда я создаю файл .php со следующим кодом и помещаю его в мой каталог Sites, а затем в Safari перехожу на http://localhost/~dave/hello.php, я получаю эту ошибку:

"Предупреждение: mysqli ::__construct (): (HY000 / 2002): нет такого файла или каталога в /Users/dave/Sites/hello.php в строке 7 Ошибка подключения: нет такого файла или каталога ".

Код вhello.php:

<?php
$servername = "localhost";
$username = "dave";
$password = "*****";

//Create connection
$conn = new mysqli($servername, $username, $password);

//Check connection
if ($conn->connect_error) {
   die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

Я перепробовал все, что мог, включая предложения в двух других похожих постах (этот: Пользователь моей базы данных существует, но я все еще получаю (HY000/ 2002): нет такого файла или каталога , а этот: PHP Предупреждение: mysqli :: __ construct (): (HY000 / 2002): такого файла или каталога нет (Debian GNU / Linux 9) ), и я не могу подключиться к MySQl с помощью php.В частности, я проверил информацию на странице php, и сокет для mysqli указан как var/mysql/mysql.sock.В соответствующей таблице в mysql значение для сокета указано как /tmp/mysql.sock.Я попытался изменить файл php.ini.default, добавив каждый из этих сокетов (вместо пустого значения), и ни один из них не работал (по-прежнему выдает ту же ошибку).Я думал, что ошибка сокета MySQL 2002 может быть проблемой, поэтому я сделал символическую ссылку, выполнив это:

sudo mkdir /var/mysql
sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock

, но все, что сделал, это сгенерировал новую ошибку:

Предупреждение: mysqli :: __ construct (): сервер запросил неизвестный клиенту метод аутентификации [caching_sha2_password] в /Users/dave/Sites/hello.php в строке 7

Предупреждение: mysqli :: __ construct ():(HY000 / 2054): сервер запросил метод аутентификации, неизвестный клиенту, в /Users/dave/Sites/hello.php в строке 7 Ошибка подключения: сервер запросил метод аутентификации, неизвестный клиенту

Поэтому я удалил символическую ссылку ... и вернулся к исходной ошибке.

Я также попытался заменить "localhost" на IP-адрес 127.0.0.1, а также "localhost: 3306", как предлагали другие ветки вопросов.Здесь тоже ничего не работает.

Пожалуйста, помогите, я новичок в этом виде использования компьютера / веб-дизайна, и у меня нет очевидных (googleable / понятно) вариантов.

1 Ответ

0 голосов
/ 19 марта 2019

Я получил некоторую помощь от некоторых местных техников в моем районе, и оказалось, что исправление ошибки сокета было первым шагом, как я пытался сделать выше.В конце концов я сделал это таким образом, используя решение по имени:

Предупреждение: mysql_connect (): [2002] Нет такого файла или каталога (при попытке соединения через unix: /// tmp / mysql.sock) in

Затем было сгенерировано второе сообщение об ошибке (то же, что и в моем вопросе, и здесь):

mysqli :: __ construct (): сервер запросил метод аутентификации, неизвестныйклиенту [caching_sha2_password] в /Users/dave/Sites/hello.php в строке 7

Предупреждение: mysqli :: __ construct (): (HY000 / 2054): сервер запросил метод аутентификации, неизвестный клиентув /Users/dave/Sites/hello.php в строке 7

Это было исправлено решением на основе SQL (ответ от 9 июня 2018 г.) на этот вопрос:

php mysqli_connect: метод аутентификации неизвестен клиенту [caching_sha2_password]

Этот оператор SQL был просто запущен в MySQL с терминала.После перезапуска сервера Apache я перезагрузил файл .php в Safari, и это привело к успешному подключению mysqli к MySQL с помощью PHP.Я также попробовал соединение PDO, и это также работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...