mysqli_real_connect(): (HY000/2002): нет такого файла или каталога

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

Ошибка PhpMyAdmin в MacOS. Я хочу ответить, я действительно не знаю, что мне нужно сделать, чтобы решить эту проблему.

Ответы

Ответ 1

изменить localhost на 127.0.0.1 в config.inc.php

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

Причиной этого является то, что pma пытается подключиться к mysql.socket, если вы используете localhost. Если вы используете 127.0.0.1, PMA создает TCP-соединение, которое должно работать.

Ответ 2

я пытаюсь это раньше

cd/opt/lampp/phpmyadmin

тогда

gedit config.inc.php

найти это,

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

если есть localhost измените его на 127.0.0.1

Примечание: если есть //, удаляем//до $cfg['Servers'][$i]['host']

Я снова проверил http://localhost/phpmyadmin/

mysqli сказал:

"phpMyAdmin попытался подключиться к серверу MySQL, и сервер отклонил соединение. Вы должны проверить хост, имя пользователя и пароль в своей конфигурации и убедиться, что они соответствуют информации, предоставленной администратором сервера MySQL".

Я снова открываю config.inc.php и я нашел

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

Заполните пароль паролем

Это сработало для меня. Это может сработать и для вас.

Ответ 3

phpmyadmin 2018 Октябрь

Найдите config.sample.inc.php

+ Изменить

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

в

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

Сохранить.

Затем переименуйте файл и удалите образец из имени.

Ответ 4

mysqli_connect(): (HY000/2002): нет такого файла или каталога

Фон:

Я просто хотел запустить несколько тестов PHPUnit на моем Mac, используя терминал. Некоторые из классов, которые я хотел протестировать, были связаны с подключением MySQL DB, который был создан и управлялся PHPMyAdmin, и веб-приложение, с которым я работал, работало нормально на localhost. Поэтому, когда я запустил эти тестовые сценарии, я получил следующую ошибку на своем терминале:

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

Решение:

Так что с зудом мне пришлось решить его и запустить свой тест, я искал в нескольких потоках SO Q & A и пробовал. И сочетание изменений сработало для меня.

  1. Найдите ваш файл config.inc.php который относится к PHPMyAdmin.
  2. Найдите строку $cfg['Servers'][$i]['host'] основном эта строка могла быть закомментирована по умолчанию, если это так, пожалуйста, раскомментируйте ее.
  3. И замените эту строку следующим:

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

  1. Сохраните его и перезапустите базу данных MySQL с панели управления XAMPP (manager-osx).
  2. Измените значение параметра $host в mysqli_connect() на следующее:

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

Примечание: это 3306 мой номер порта MySQL, который по умолчанию. Вы должны лучше проверить, какой у вас номер порта MySQL, прежде чем следовать этим шагам.

И это все. Для меня работал только этот набор шагов и ничего больше. Я запустил свои модульные тесты, и они работали нормально, и данные БД также были корректно обновлены в соответствии с тестами.

Почему это работает:

Самая близкая причина, которую я мог бы найти, состоит в том, что это работает, потому что иногда метод mysqli_connect требует рабочего сокета (IP-адрес хоста БД и номер порта) базы данных. Так что, если вы закомментировали $cfg['Servers'][$i]['host'] = '127.0.0.1'; или в качестве значения в нем укажите localhost, он игнорирует номер порта. Но если вы хотите использовать сокет, то вы должны использовать "127.0.0.1" или реальное имя хоста. (для меня это, кажется, независимо от того, какой номер порта по умолчанию у нас есть на самом деле, мы должны выполнить вышеуказанные шаги.) Для получения дополнительной информации прочитайте следующую ссылку PHPMyAdmin.

Надеюсь, что это может быть полезно для кого-то еще там.

Ура!

Ответ 5

Возможно, ваш SQL-сервер остановлен

sudo /etc/init.d/mysql start

Ответ 6

Прежде всего, убедитесь, что служба mysql запущена:

ps elf|grep mysql

вы увидите вывод, как это, если работает:

4 S root      9642     1  0  80   0 -  2859 do_wai 23:08 pts/0    00:00:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/tomcat-machine.local.pid
4 S mysql     9716  9642  0  80   0 - 200986 poll_s 23:08 pts/0   00:00:00 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin --user=mysql --log-error=/var/lib/mysql/tomcat-machine.local.err --pid-file=/var/lib/mysql/tomcat-machine.local.pid

затем измените localhost на 127.0.0.1 в config.inc.php

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

Пароль по умолчанию для пользователя "root" пуст "" ничего не вводите для пароля

Если он не позволяет пустой пароль, вам нужно снова отредактировать config.inc.php и изменить:

$cfg['Servers'][$i]['AllowNoPassword'] = true;

Проблема заключается в сочетании настроек конфигурации и MySQL не работает. Именно это помогло мне исправить эту ошибку.

Ответ 7

Я исправил проблему сегодня, используя следующие шаги:

  1. Если config.inc.php не существует в каталоге phpMyadmin Скопируйте файл config.sample.inc.php в config.inc.php.

  2. Добавить сокет в /* Server parameters */

    $cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
    
  3. Сохраните файл и получите доступ к phpmyadmin через url.

Если вы используете mysql 8.0.12, вы должны использовать устаревшее шифрование паролей, поскольку сильное шифрование не поддерживается клиентом php. enter image description here

Ответ 8

Если вы используете archlinux или Ubuntu, просто введите следующие команды:

$ cd/opt/lampp/phpmyadmin

затем

$ sudo gedit config.inc.php

Затем, когда вы получите доступ к файлу, найдите приведенные ниже сценарии,

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

удалите " // ", чтобы он остался, как показано ниже:

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

Затем измените " localhost " на " 127.0.0.1 ", и скрипт должен повернуться, как показано ниже:

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

Вернитесь в браузер и введите http://127.0.0.1/phpmyadmin/

Если он все еще отказывается

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

затем вернитесь к тому же файлу config.inc.php, который вы редактировали, и сделайте следующее:

$ cd/opt/lampp/phpmyadmin

затем

$ sudo gedit config.inc.php

поиск сценария ниже

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

Заполните пароль своим корневым паролем

$ cfg ['Servers'] [$ i] ['password'] = 'ваш_пароль'

И это должно работать. Счастливого взлома друзья.

Ответ 9

Если ваш сайт работал нормально и теперь неожиданно ОШИБКА: (HY000/2002): No such file or directory

Тогда вы не должны изменять любой файл конфигурации!

Сначала проверьте файл error.log сервера, для Nginx он расположен:

/var/log/nginx/error.log

Или для Apache попробуйте:

/var/log/apache2/error_log

В моем случае я мог видеть PHP Fatal error: OUT OF MEMORY в error.log для nginx.

Решение: добавить больше оперативной памяти на сервер.


Я попытался перезагрузить веб-сервер перед обновлением/добавлением оперативной памяти. Затем я избавился от ERROR (HY000/2002) but got some ERROR 50X: Connection Error...

В этот момент я добавил 2 ГБ ОЗУ, перезагрузил веб-сервер и все работало нормально!

Когда веб-сервер был запущен, я заметил, что cron-jobs 200+ зависли из-за ошибки цикла в 1 PHP-скрипте.

Так что проверьте, какой скрипт потребляет память.

Ответ 10

Запуск сервера MySQL решил мою проблему

Ответ 11

Если вышеуказанные решения не работают, попробуйте изменить значение по умолчанию от 3306 до другого (т.е. 3307)

Ответ 12

Вам просто нужно переименовать ib_logfile0 и ib_logfile1 как ib_logfile_0 и ib_logfile_1. Тогда ваша проблема будет решена.