mysqli_real_connect(): (HY000/2002): No such file or directory
Помилка PhpMyAdmin на MacOS. Я хочу відповісти. Я справді не уявляю, що мені потрібно зробити, щоб це вирішити.
Відповіді:
змінити localhost на 127.0.0.1 у /etc/phpmyadmin/config.inc.php
$cfg['Servers'][$i]['host'] = '127.0.0.1';
Причиною цього є те, що pma намагається підключитися до mysql.socket, якщо ви використовуєте localhost. Якщо ви використовуєте 127.0.0.1, PMA встановлює TCP-з'єднання, яке має працювати.
localhost
.
localhost
вам потрібно налаштувати MySQL для прослуховування на сокеті замість TCP / IP. Я завжди рекомендував би це робити, коли ваша база даних знаходиться на одній машині.
Я пробую це раніше
cd /opt/lampp/phpmyadmin
Тоді
gedit config.inc.php
Знайдіть це
$cfg['Servers'][$i]['host'] =
Якщо є, localhost
змініть його на127.0.0.1
Примітка: якщо є '//' видалити // раніше
$cfg['Servers'][$i]['host']
Я перевірив ще раз http://localhost/phpmyadmin/
Мисклі сказав:
"phpMyAdmin намагався підключитися до сервера MySQL, і сервер відхилив підключення. Вам слід перевірити хост, ім'я користувача та пароль у вашій конфігурації та переконатися, що вони відповідають інформації, наданій адміністратором сервера MySQL."
Я знову відкриваю config.inc.php
і знайшов
$cfg['Servers'][$i]['password'] =
Заповніть пароль своїм паролем
У мене це спрацювало. Це може працювати і для вас.
Знайдіть config.sample.inc.php
Зміна
$cfg['Servers'][$i]['host'] = 'localhost';
в
$cfg['Servers'][$i]['host'] = '127.0.0.1';
Зберегти.
Потім перейменуйте файл і видаліть зразок з імені.
sudo /etc/init.d/mysql start
або
sudo service mysqld start
і використовуйте service mysql status
для перевірки статусу
РЕДАКТУВАТИ додавання з коментарів:
Використання:
sudo systemctl enable mysql
продовжувати працювати MySQL.
sudo systemctl enable mysql
для продовження роботи MySQL. Вибачте за пізню відповідь. Я пропустив це повністю.
Мені просто хотіли запустити деякі тести PHPUnit на своєму Mac, використовуючи Terminal. Деякі класи, які я хочу протестувати, мали підключати MySQL DB, яку створив і керував PHPMyAdmin, а веб-програма, з якою я працював, працювала нормально в localhost. Отже, коли я запустив те тести, на моєму терміналі з’явилася така помилка:
mysqli_connect(): (HY000/2002): No such file or directory
Отже, з-за свербіння мені довелося його вирішити та запустити тест, я шукав у кількох потоках запитань SO та пробував. І поєднання змін спрацювало для мене.
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 для отримання додаткової інформації.
Сподіваюся, це може бути корисним для когось іншого.
На здоров’я!
Я вирішив проблему сьогодні, виконавши наведені нижче дії:
Якщо 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-клієнтом.
Перш за все, переконайтеся, що служба 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, який не працює. Саме це допомогло мені виправити цю помилку.
Я зіткнувся з цією проблемою на CentOS .
Спочатку я пробую це
sudo service mysql restart
Потім з’являється помилка
Redirecting to /bin/systemctl restart mysql.service
Failed to restart mysql.service: Unit not found.
Тоді я знайшов це
Накажіть це вирішити мою проблему
systemctl start mariadb.service
Якщо ви використовуєте 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'] ='your_password'
І це має спрацювати.
Якщо ваш веб-сайт працював нормально і тепер несподівана ПОМИЛКА :(HY000/2002): No such file or directory
Тоді вам НЕ ЗМІНЮЙТЕ будь-який конфігураційний файл!
Спочатку перевірте файл error.log сервера , для Nginx він знаходиться:
/var/log/nginx/error.log
Або для Apache спробуйте:
/var/log/apache2/error_log
У моєму випадку я міг побачити PHP Фатальну помилку: ЗАРАЗ ПАМ'ЯТІ в error.log для nginx.
Рішення: додайте більше оперативної пам'яті на сервер.
Я намагався перезавантажити веб-сервер спочатку перед оновленням / додаванням оперативної пам'яті. Тоді я позбувсяERROR (HY000/2002) but got some ERROR 50X: Connection Error...
На цьому етапі я додав 2 ГБ оперативної пам'яті, перезавантажив веб-сервер і все працювало нормально!
Коли веб-сервер вийшов, я помітив, що понад 200 завдань cron застрягли через помилку циклу в 1 PHP-сценарії.
Тож перевірте, який сценарій забирає пам’ять.
У мене була та сама проблема. У моєму /etc/mysql/my.cnf
не було шляху більше до mysqld.sock
визначеного. Тому я розпочав пошук, щоб знайти його за допомогою: find / -type s | grep mysqld.sock
але його не вдалося знайти. Я перевстановив mysql за допомогою:apt install mysql-server-5.7
(будь ласка, перевірте, перш ніж запускати поточну версію sql-сервера).
Це вирішило мою проблему.
mysqli_connect(): (HY000/2002): No such file or directory
Я стикався з такою ж проблемою на debian9 VM, я намагався перезапустити MySQL, але це не вирішило проблему, після цього я збільшив оперативну пам'ять (мене зменшили), і це спрацювало.
У мене була та сама проблема. Я запускав CentOS 8 із застосуванням SELinux і отримував помилку, згадану у питанні (mysqli_real_connect(): (HY000/2002): No such file or directory
), незважаючи на те, що всі конфігурації були виправлені правильно. Пізніше я вийшов із проблеми, дозволивши з'єднання MySQL через SELinux.
Перевірте стан SELinux за допомогою цієї команди:
sestatus
Дозволити Apache підключати базу даних через SELinux
setsebool httpd_can_network_connect_db 1
-P
Параметр Use робить зміну постійною. Без цієї опції логічне значення буде скинуто до 0 при перезавантаженні.
setsebool -P httpd_can_network_connect_db 1
У Linux просто робіть
sudo systemctl stop mysql
sudo systemctl start mysql
працював у мене
Якщо наведені вище рішення не працюють, спробуйте змінити порт за замовчуванням з 3306 на інший (тобто 3307)
Вам просто потрібно перейменувати ib_logfile0 та ib_logfile1 як ib_logfile_0 та ib_logfile_1. Тоді ваша проблема буде вирішена.