Решение проблемы «/var/run/mysqld/mysqld.sock не найден»

mysqlРаботая с реляционной базой данных MySQL, можно столкнуться с проблемой: при старте демона(сервиса) mysqld возвращается сообщение об ошибке:

ERROR 2002 (HY000): Can't connect
to local MySQL server through
socket '/var/run/mysqld/mysqld.sock' (2)

Эта же ошибка в логах выглядит так:

[ERROR] Can't start server : Bind on unix socket: No such file or directory
[ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?

Иначе говоря, MySQL демон не может подключиться к Unix-сокету. А такое может произойти по двум причинам:

  1. кто-то уже занял сокет;
  2. MySQL не может получить доступ к сокету.

Для проверки первого варианта можно попробовать узнать: а не занимает ли кто-то этот файл.

sudo lsof /var/run/mysqld/mysqld.sock

В результате получаем нечто подобное:

COMMAND PID  USER   FD   TYPE  DEVICE     SIZE/OFF NODE NAME
mysqld  1299 mysql  6u   unix  0xf688b840 0t0      7877 /var/run/mysqld/mysqld.sock

где видно, кто занял файл. Или же

...
lsof: status error on /run/mysqld/mysqld.sock: No such file or directory
...

-- файл отсутствует.

В первом случае всё ясно -- либо так и надо, либо отключаем приложение, занявшее сокет.
Во втором случае стоит создать сокет и/или сделать его доступным mysql, для этого выполняем:

sudo mkdir /var/run/mysqld
sudo mkfifo /var/run/mysqld/mysqld.sock
sudo chown -R mysql /var/run/mysqld

Построчно:

  1. создаём папку, в которой должен лежать файл сокета;
  2. создаём сам сокет командой mkfifo (хотя сокет -- это тоже файл, создавать его можно только специальной программой -- mkfifo);
  3. устанавливаем владельцем папки /var/run/mysqld пользователя mysql.

После чего MySQL уже должен нормально работать.

Поделиться заметкой:
Планшет HTC Nexus 9
Обзор планшета Nexus 9
Как MacBook, но не Mac
Ноутбук Dell XPS 15 L521X
Sony Extra Bass
Отзыв на наушники Sony Extra Bass
  • Вячеслав

    Бывает еще проще. Проверьте права доступа к /tmp

    • Ido

      … и еще проще. Надо дать права чтения-записи всем юзерам (не только root и gammu) файлов /etc/gammu-smsrd /var/log/gammu-smsd.

      • джо

        а это не лучшее решение имхо

  • Алексий

    Короче говнище полное этот ваш линукс весь! Кто хочет перейти с Windows, не спешите. Все это фуфло про то что линукс лучше! Тогда я скажу что микрокалькулятор еще лучше, там все понятно и не тормозит. Сто раз ставил LAMP и всегда удавалось решать текущие с ним проблемы, но в этот раз нихуя! Перерыл весь нет, перепробовал все шаманские танцы и засрал систему (как правило в линуксе все так и происходит по умолчаню, кривая сырая какаха, народу нельзя доверят код) и щас пойду сносить этот геморой и поставлю старую добрую Windows. Надоело тратить время (третьи сутки не сплю сижу, а итог переустановка). LINUX в говно!!!!

    • svized

      не линукс говнище а моск не в ту степь!!

    • Дюша Метёлкин

      Дело было не в бобине…
      Долбоёб сидел в кабине.

    • http://alexashka.ru Alex Lapin

      Хаа троль!

    • temkin

      Когда у людей не хватает на что-то серого вещества в черепушке многие себя всегда так ведут, это нормальное поведение. Читайте книги и включайте почаще голову и всё получиться!

    • джо

      лол, тролинг)

  • kuzya

    Спасибо большое, помогло поднять SQL на FreePbx , asterisk

  • Andrey

    sudo killall -9 mysqld

    • Andrey

      sudo killall -9 mysqld
      sudo /etc/init.d/mysql start

      • http://alexashka.ru Alex Lapin

        Вот это солюшн, делов то. Спасибо.

  • Саня

    спасибо, помогла :) а то сносил раза 2-3 не помогало нечего

  • Zevs

    объясните, я не понял

  • Pavel dyadya

    А у меня всё банальнее оказалось: в /var место свободное кончилось

  • Вячеслав

    спасибо! очень помогли!