mysqli_real_connect(): (HY000/2002): No such file or directory
Ошибка PhpMyAdmin в MacOS. Я хочу ответить, я действительно не знаю, что мне нужно сделать, чтобы решить эту проблему.
mysqli_real_connect(): (HY000/2002): No such file or directory
Ошибка PhpMyAdmin в MacOS. Я хочу ответить, я действительно не знаю, что мне нужно сделать, чтобы решить эту проблему.
изменить 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-соединение, которое должно работать.
я пытаюсь это раньше
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'] =
Заполните пароль паролем
Это сработало для меня. Это может сработать и для вас.
phpmyadmin 2018 Октябрь
Найдите config.sample.inc.php
+ Изменить
$cfg['Servers'][$i]['host'] = 'localhost';
в
$cfg['Servers'][$i]['host'] = '127.0.0.1';
Сохранить.
Затем переименуйте файл и удалите образец из имени.
Я просто хотел запустить несколько тестов PHPUnit на моем Mac, используя терминал. Некоторые из классов, которые я хотел протестировать, были связаны с подключением MySQL DB, который был создан и управлялся PHPMyAdmin, и веб-приложение, с которым я работал, работало нормально на localhost. Поэтому, когда я запустил эти тестовые сценарии, я получил следующую ошибку на своем терминале:
mysqli_connect(): (HY000/2002): No such file or directory
Так что с зудом мне пришлось решить его и запустить свой тест, я искал в нескольких потоках SO Q & A и пробовал. И сочетание изменений сработало для меня.
config.inc.php
который относится к PHPMyAdmin.$cfg['Servers'][$i]['host']
основном эта строка могла быть закомментирована по умолчанию, если это так, пожалуйста, раскомментируйте ее. $cfg['Servers'][$i]['host'] = '127.0.0.1';
$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.
Надеюсь, что это может быть полезно для кого-то еще там.
Ура!
Возможно, ваш SQL-сервер остановлен
sudo /etc/init.d/mysql start
Прежде всего, убедитесь, что служба 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 не работает. Именно это помогло мне исправить эту ошибку.
Я исправил проблему сегодня, используя следующие шаги:
Если config.inc.php не существует в каталоге phpMyadmin Скопируйте файл config.sample.inc.php в config.inc.php.
Добавить сокет в /* Server parameters */
$cfg['Servers'][$i]['socket'] = '/tmp/mysql.sock';
Сохраните файл и получите доступ к phpmyadmin через url.
Если вы используете mysql 8.0.12, вы должны использовать устаревшее шифрование паролей, поскольку сильное шифрование не поддерживается клиентом php.
Если вы используете 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'] = 'ваш_пароль'
И это должно работать. Счастливого взлома друзья.
Если ваш сайт работал нормально и теперь неожиданно ОШИБКА: (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-скрипте.
Так что проверьте, какой скрипт потребляет память.
Запуск сервера MySQL решил мою проблему
Если вышеуказанные решения не работают, попробуйте изменить значение по умолчанию от 3306 до другого (т.е. 3307)
Вам просто нужно переименовать ib_logfile0 и ib_logfile1 как ib_logfile_0 и ib_logfile_1. Тогда ваша проблема будет решена.