Я пытаюсь настроить WordPress. У меня работают Apache и MySQL, и все учетные записи и база данных настроены. Я попытался установить простое соединение:
<?php
$conn = mysql_connect('localhost', 'USER', 'PASSWORD');
if(!$conn) {
echo 'Error: ' . mysql_errno() . ' - ' . mysql_error();
}
?>
И я всегда получаю это:
Ошибка: 2002 - Нет такого файла или каталога
О каком файле или каталоге может идти речь?
Я использую OS X Snow Leopard, использую встроенный Apache. Я установил MySQL с помощью dmg x86_64.
ОБНОВЛЕНИЕ: я обнаружил, что сокет находится в /tmp/mysql.sock, поэтому в php.ini я заменил им все вхождения неправильного пути.
php
mysql
connection
mk12
источник
источник
/etc/init.d/mysql start
если вы используете базовый дистрибутив debian. в случае неудачи проверьте/etc/my.cnf
файл на предмет правильного пути к файлу сокета mysql.Ответы:
Если вы используете Linux: неверный путь к файлу mysql.sock. Обычно это происходит потому, что вы используете (LAMPP) XAMPP, а его нет в /tmp/mysql.sock
Откройте файл php.ini и найдите эту строку:
И сделай это
источник
localhost
работать, и TCP / IP работает, поэтому изменение его на адрес TCP / IP127.0.0.1
будет работать.У меня была аналогичная проблема, и я смог ее решить, обратившись к моему mysql с помощью
127.0.0.1
вместоlocalhost
.Это, вероятно, означает, что у меня что-то не так с настройкой хоста, но это быстрое исправление меня прямо сейчас.
источник
code
127.0.0.1 localhostcode
. Что заставляет меня любопытствовать, почему подключение через localhost не работает. Если бы кто-то мог просветить меня, я был бы счастлив.localhost
работать, и TCP / IP работает, поэтому изменение его на адрес TCP / IP127.0.0.1
будет работать.Это для Mac OS X с собственной установкой Apache HTTP и выборочной установкой MySQL .
Ответ основан на отличном ответе @ alec-gorge, но, поскольку мне пришлось внести в Google некоторые конкретные изменения, чтобы настроить его в моей конфигурации, в основном для Mac OS X, я подумал, что добавлю его сюда для полноты картины.
Включить поддержку PHP5 для Apache HTTP
Убедитесь, что поддержка PHP5 включена в
/etc/apache2/httpd.conf
.Отредактируйте файл
sudo vi /etc/apache2/httpd.conf
(введите пароль, когда его спросят) и раскомментируйте (удалите;
с начала) строку, чтобы загрузить модуль php5_module .Запустите Apache HTTP с помощью
sudo apachectl start
(или,restart
если он уже запущен и его нужно перезапустить, чтобы перечитать файл конфигурации).Убедитесь, что он
/var/log/apache2/error_log
содержит строку, которая сообщает вам, что php5_module включен - вы должны увидетьPHP/5.3.15
(или подобное).Поиск имени файла сокета
Когда MySQL запущен и работает (с
./bin/mysqld_safe
), на консоль должны быть выведены строки отладки, которые сообщают вам, где вы можете найти файлы журнала. Обратите внимание на имя хоста в имени файла -localhost
в моем случае - оно может отличаться для вашей конфигурации.Файл, который идет после
Logging to
, важен. Вот где MySQL регистрирует свою работу.Откройте
localhost.err
файл (опять же, ваш может называться по-другому), т.е.tail -1 /Users/jacek/apps/mysql/data/localhost.err
узнать имя файла сокета - оно должно быть последней строкой.Обратите внимание на
socket:
часть - это файл сокета, который вы должны использоватьphp.ini
.Есть другой способ (некоторые говорят, что это более простой способ) определить местоположение имени файла сокета, войдя в MySQL и запустив:
Настройка PHP5 с поддержкой MySQL - /etc/php.ini
Кстати о php.ini ...
В
/etc
каталоге есть файл /etc/php.ini.default . Скопируйте его в /etc/php.ini .Откройте
/etc/php.ini
и найдите mysql.default_socket .По умолчанию
mysql.default_socket
-/var/mysql/mysql.sock
. Вы должны изменить его на значение, которое вы отметили ранее - это было/tmp/mysql.sock
в моем случае.Замените
/etc/php.ini
файл, чтобы он отражал имя файла сокета:Окончательная проверка
Перезапустите Apache HTTP.
Проверьте журналы, нет ли ошибок, связанных с PHP5. Отсутствие ошибок означает, что все готово, и PHP5 с MySQL должен работать нормально. Поздравляю!
источник
mysql_connect
, что является реальной проблемой исходного вопроса, а не общего неправильное представление об установке программного обеспечения.localhost
. Никто, ищущий помощи по настройке xamp на macos, не попадет сюда через гугл. Поэтому я использовал термин «дерьмо». Этот поток не имеет ничего общего с macos, а только с mysql (даже не с php).Помогла замена localhost на 127.0.0.1 в файле конфигурации (подключение к базе данных)!
источник
Может помочь перезапуск сервера mysql. В моем случае перезапуск сервера сэкономил много времени.
PS - использовать
sudo service mysql restart
для некорневого пользователя.источник
Во-первых, убедитесь, что MySQL работает. Команда: mysqld start
Если вы по-прежнему не можете подключиться, то: Как выглядит ваш /etc/my.cnf? (или /etc/msyql/my.cnf)
Остальные 2 сообщения верны в том, что вам нужно проверить свой сокет, потому что 2002 - это ошибка сокета.
Отличное руководство по настройке LAMP: http://library.linode.com/lamp-guides/centos-5.3/index-print
источник
/usr/local/mysql/mysql-test/include/default_my.cnf
, следует ли мне скопировать его как my.cnf в/etc
?Не то чтобы это вам сильно помогло, но в последних версиях (и даже менее свежих ) MySQL код ошибки 2002 означает «Невозможно подключиться к локальному серверу MySQL через сокет [имя-сокета]», так что это может сказать вам еще немного.
источник
Расширяя ответ Матиаса Д здесь, я смог разрешить эту ошибку 2002 года как в MySQL, так и в MariaDB с точными путями, используя следующие команды:
Сначала получите фактический путь к сокету MySQL:
Затем получите путь PHP :
Используя вывод этих двух команд , свяжите их:
Если это вернется,
No such file or directory
вам просто нужно создать путь к PHP mysql.sock, например, если ваш путь был,/var/mysql/mysql.sock
вы бы запустили:Затем попробуйте снова выполнить команду sudo ln .
источник
Я бы проверил ваш файл php.ini и убедился, что mysql.default_socket установлен правильно, а также проверил, что ваш mysqld правильно настроен с файлом сокета, к которому он может получить доступ. Типичное значение по умолчанию - «/tmp/mysql.sock».
источник
/var/mysql/mysql.sock
, но этого пути не существует.Я тоже столкнулся с этой проблемой, затем я изменил localhost на 127.0.0.1, он работает.
источник
в моем случае у меня проблема с mysqli_connect.
когда я хочу подключиться,
mysqli_connect('localhost', 'myuser','mypassword')
mysqli_connect_error () возвращает мне эту ошибку «Нет такого файла или каталога»
это сработало для меня
mysqli_connect('localhost:3306', 'myuser','mypassword')
источник
Ошибка 2002 означает, что MySQL не может подключиться к локальному серверу базы данных через файл сокета (например
/tmp/mysql.sock
).Чтобы узнать, где находится ваш файл сокета, запустите:
затем дважды проверьте, что ваше приложение использует правильный файл сокета Unix или вместо этого подключается через порт TCP / IP.
Затем дважды проверьте, правильно ли настроен ваш PHP-сокет MySQL:
и убедитесь, что этот файл существует .
Проверить розетку:
Если сокет Unix неправильный или не существует, вы можете создать символическую ссылку на него, например:
или исправьте свой файл конфигурации (например
php.ini
).Чтобы проверить соединение PDO непосредственно из PHP, вы можете запустить:
Также проверьте конфигурацию между Apache и CLI (интерфейс командной строки), поскольку конфигурация может отличаться.
См .: Устранение неполадок при подключении к MySQL.
Другие утилиты / команды, которые могут помочь отследить проблему:
mysql --socket=$(php -r 'echo ini_get("mysql.default_socket");')
netstat -ln | grep mysql
php -r "phpinfo();" | grep mysql
php -i | grep mysql
xdebug.show_exception_trace=1
в своемxdebug.ini
sudo dtruss -fn mysqld
, в Linux отладка сstrace
stat $(mysql_config --socket)
и достаточно ли свободного места (df -h
).net.core.somaxconn
.источник
Убедитесь, что ваш локальный сервер (MAMP, XAMPP, WAMP и т. Д.) Работает.
источник
У меня была похожая проблема.
По сути, проблема в том, что, вероятно, запущено два экземпляра mysql.
A) Один работает в /etc/init.d
B) Лампа устанавливается в / opt / lamp
Решение:
Шаг 1: - Найдите все запущенные экземпляры mysql с помощью команды "find / | grep mysqld"
Шаг 2: - Завершите работу служб, работающих в /etc/init.d с использованием службы mysql stop
Шаг 3. - Перезапустите службы лампы с помощью / opt / lamp / lamp restart
Тебе должно быть хорошо :)
источник
На Mac, прежде чем выполнять всю тяжелую работу, просто проверьте свои настройки
System Preferences > MySQL
. С тех пор я чаще всего сталкивался с этой проблемойThe MySQL Server Instance is stopped
.Нажмите
Start MySQL Server
кнопку, и произойдет волшебство.источник
Я использую PHP-FPM или несколько версий PHP на моем сервере. В моем случае я обновляю значение mysqli, так как нет параметра сокета по умолчанию mysql:
кому:
спасибо @Alec Gorge
источник
У меня такая же проблема. В итоге мой сокет был найден в /tmp/mysql.sock. Затем я добавил этот путь в php.ini. Я нашел сокет там, проверив страницу «Состояние сервера» в MySQL Workbench. Если вашего сокета нет в /tmp/mysql.sock, может быть, MySQL Workbench скажет вам, где он? (Допустим, вы используете MySQL Workbench ...)
источник
Я установил MySQL с помощью установщика. Фактически, рядом с каталогом bin не было каталога данных.
Итак, я вручную создал каталог «data» в «C: \ Program Files \ MySQL \ MySQL Server 8.0». И это сработало (изменение пароля root в соответствии с инструкциями, предложенными на https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/resetting-permissions-windows.html .
источник
Digital Ocean MySql 2002-нет-такого-файла-или-каталога
Добавить этот конец файла
/etc/mysql/my.cnf
Перезапустите MySql
service mysql restart
источник
У меня тоже была такая же проблема на сервере Linux. Мне помогла команда sudo reboot , которая используется для перезагрузки сервера Linux.
источник
включить и запустить службу mariadb
sudo systemctl включить mariadb.service
sudo systemctl start mariadb.service
источник