MySQL 2002: Can't connect to local server through socket — что делать
Ошибка 2002 значит, что программа не нашла базу на этом же сервере: служба MySQL или MariaDB не запущена или программа ищет её не там. Сначала проверьте службу.
Содержание 8
Как выглядит ошибка
В MySQL:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)В MariaDB:
ERROR 2002 (HY000): Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)Сокет — это файл, через который программы на том же сервере подключаются к базе без сети. Его создаёт сама служба базы, когда запускается. Число в скобках — системный код ошибки:
(2)— файла сокета нет. Значит, служба базы не запущена.(111)— файл есть, но подключение отклонено: его никто не слушает. Например, служба упала, а файл остался.
Команды на этой странице вводятся на сервере: подключитесь к нему по SSH (как подключиться) и набирайте их в том же окне.
Шаг 1. Проверьте, работает ли служба
Для MySQL:
sudo systemctl status mysqlДля MariaDB:
sudo systemctl status mariadbНе знаете, что стоит, — выполните mysql --version: если в ответе есть слово MariaDB, у вас MariaDB. Строка Active: active (running) значит, что служба работает, — тогда переходите к шагу 4. inactive (dead) или failed — служба остановлена. Чтобы вернуться к вводу команд, нажмите Q.
Шаг 2. Запустите службу
sudo systemctl start mysqlДля MariaDB вместо mysql напишите mariadb. Снова проверьте статус. Если служба работает, повторите то, что вызвало ошибку.
Шаг 3. Если служба не запускается — посмотрите журнал
MySQL пишет причину в файл:
sudo tail -n 50 /var/log/mysql/error.logMariaDB — в системный журнал:
sudo journalctl -u mariadb -n 50 --no-pagerИщите строки со словом [ERROR]. Среди причин — заполненный диск и ошибка в файле настроек после правки. Свободное место на диске покажет команда:
df -hЕсли в строке с / в колонке Use% стоит 100%, освободите место и снова запустите службу. Если вы перед этим правили файл настроек базы, верните прежнее значение.
Шаг 4. Если служба работает, а ошибка остаётся
Значит, программа ищет сокет не по тому пути. Сравните путь из сообщения с путём, где служба создаёт сокет: у MySQL из пакетов Ubuntu это /var/run/mysqld/mysqld.sock, у MariaDB — /run/mysqld/mysqld.sock. Проверьте, есть ли файл:
ls -l /run/mysqld/Самый простой выход — подключаться к базе не через сокет, а по сети внутри сервера. Для этого в настройках программы вместо адреса localhost укажите 127.0.0.1. Клиент MySQL понимает слово localhost как «подключиться через сокет», а 127.0.0.1 — как «по сети к этому же серверу». У WordPress адрес базы стоит в wp-config.php, в строке DB_HOST.
Если сайт на обычном хостинге
Адрес сервера базы указан в панели хостинга. Впишите его в настройки сайта как есть. Если адрес верный, а ошибка остаётся, сервер базы недоступен на стороне хостинга — напишите в поддержку.
Тексты ошибок и настройки сверены с исходным кодом MySQL 8.0.46 и MariaDB 10.11.14 — эти версии ставятся из пакетов Ubuntu 24.04. В других версиях строки могут немного отличаться.
Источники
- Исходный код MySQL 8.0.46: errmsg.cc — тексты ошибок программы-клиента MySQL.
- Исходный код клиентской библиотеки MariaDB: ma_errmsg.c — тексты ошибок программы-клиента MariaDB.
- Пакет MySQL в Ubuntu 24.04: rules — путь к сокету /var/run/mysqld/mysqld.sock.
- Исходный код MariaDB 10.11.14: install_layout.cmake — путь к сокету /run/mysqld/mysqld.sock для пакетов Debian и Ubuntu.
- Исходный код MySQL 8.0.46: client.cc — адрес localhost — подключение через сокет.
- Исходный код Linux: errno-base.h — номер 2: нет такого файла.
- Исходный код Linux: errno.h — номера системных ошибок: 110 — истекло время, 111 — подключение отклонено.
- Пакет MySQL в Ubuntu 24.04: mysqld.cnf — файл настроек сервера: bind-address, журнал, max_allowed_packet.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026