MySQL и MariaDB LinuxWindowsmacOS

MySQL: ERROR 2002 — Can't connect through socket

  • Обновлено
  • Чтение ≈ 2 минуты
  • Нужны права администратора

Краткий ответ

Запустите mysqld и проверьте путь сокета.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Проверка службы
  5. Путь сокета
  6. Для PHP-приложений

#Что означает ошибка

Сообщение
Can't connect through socket

Ошибка 2002 «Can't connect to local MySQL server through socket» означает, что клиент пытается подключиться к MySQL через Unix-сокет (файл), но сервер либо не запущен, либо сокета нет по указанному пути. При подключении к localhost клиенты MySQL по умолчанию используют сокет, а не TCP, поэтому ошибка не зависит от открытости порта 3306.

Типичные ситуации: служба остановилась (нехватка памяти, кончилось место, ошибка в конфигурации), поменялся путь сокета после обновления или в разных конфигах клиента и сервера указаны разные пути.

Запустите mysqld и проверьте путь сокета.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Сервер остановленmysqld.Проявляется как «Can't connect through socket» или близкий по смыслу сбой.Запустите.
Путь сокетаКонфиг.Проявляется как «Can't connect through socket» или близкий по смыслу сбой.Исправьте.
ПраваСокет.Проявляется как «Can't connect through socket» или близкий по смыслу сбой.Проверьте.
ПамятьOOM.Проявляется как «Can't connect through socket» или близкий по смыслу сбой.Освободите.

#Пошаговое решение

  1. Запустите MySQLПодключитесь к серверу через SSH или консоль провайдера и посмотрите systemctl status mysql или mariadb в зависимости от установки. Если служба failed, откройте её журнал и устраните первичную причину до запуска. Если служба active, переходите к проверке пути сокета.
  2. Проверьте путь к сокетуВ терминале выполните sudo ss -lxnp | grep -E "mysql|maria" и найдите текущий UNIX-сокет. Сверьте путь с настройками клиента mysql --help | grep socket и socket в конфигурации сервера; старый путь из другой версии MySQL может сохраняться в приложении.
  3. Подключитесь по TCPЕсли сервер разрешает локальный TCP, проверьте sudo ss -ltnp | grep 3306 и выполните mysql -h 127.0.0.1 -P 3306 -u имя_пользователя -p. Если TCP работает, а localhost нет, исследуйте только сокет/путь. Не открывайте 3306 во внешний Интернет ради этой проверки.
  4. Прочитайте журналЕсли MySQL не запускается, посмотрите sudo journalctl -u mysql -n 100 --no-pager либо журнал MariaDB и найдите первую ошибку: порт, права, место или повреждение InnoDB. Не удаляйте сокет и файлы данных наугад; при повреждении сначала готовьте резервную копию.
  5. Проверьте место и памятьВыполните df -h, df -i, free -h и проверьте OOM-сообщения ядра; если закончились место или память, исправляйте причину их нехватки. После восстановления запустите службу по утверждённой процедуре и повторите соединение тем же пользователем.

#Проверка службы

Выполните systemctl status mysql (или mariadb). Если служба не запущена, попробуйте systemctl start mysql и изучите журнал: /var/log/mysql/error.log или journalctl -u mysql. Часто причина — нехватка оперативной памяти (процесс убит OOM-killer) или переполненный диск.

#Путь сокета

Узнайте путь сокета в конфигурации сервера (параметр socket в разделе [mysqld]) и клиента (разделы [client] и [mysql]). Они должны совпадать. Если сервер работает, а клиент ищет другой файл, укажите нужный путь в параметре --socket либо подключайтесь по TCP: mysql -h 127.0.0.1 -P 3306.

#Для PHP-приложений

В конфигурации сайта используйте тот же сокет или хост 127.0.0.1. В php.ini параметры pdo_mysql.default_socket и mysqli.default_socket должны указывать на существующий файл. После смены конфигурации перезапустите PHP-FPM и веб-сервер.

Linux · Терминал (Bash)КомандаНужен sudo
Проверка службы, путей сокета и подключения по TCP.
sudo systemctl status mysql
sudo grep -r "socket" /etc/mysql/
mysql -h 127.0.0.1 -P 3306 -u root -p

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.