Решение проблемы «/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 уже должен нормально работать.

Поделиться заметкой:
Узнать версию Linux
Все способы узнать версию дистрибутива Linux (а также FreeBSD, MacOS и прочих)
Права на файлы
Права на файлы и папки в Linux, FreeBSD и MacOS
Настоящий интеллект
  • Вячеслав

    Бывает еще проще. Проверьте права доступа к /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 место свободное кончилось

  • Вячеслав

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

  • Roman

    Нифига не помогает создание файла.. Также fail. Виноват во всем lamp из коробки, он криво встает, лучше по отдельности все ставить.

  • Павел Семенов

    Не запускается mysql.
    /etc/init.d/mysql start
    [FAIL] Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!

    Пытаюсь создать файл
    root@c-ns:~# sudo mkfifo /var/run/mysqld/mysqld.sock
    -bash: sudo: п╨п╬п╪п╟пҐпЄп╟ пҐп╣ пҐп╟п╧пЄп╣пҐп╟
    Файл не создаётся.

    Взял по SSH создал файл mysqld.sock, но при попытке старта mysqld этот файл тупо удаляется. Что делать? Как запустить этот mysql?

    Система Debian 3.2.73-2+deb7u1 x86_64

  • CONGLOMERATE GAME

    Когда пишешь sudo chown -R mysql /var/run/mysqld пишет неверный пользователь mysql

  • Николай

    проблема решается командой:

    sudo systemctl start mariadb.service

    если кому поможет, пожалуйста, отпишитесь

  • Человек

    Спасибо, помогло. На компьютере такое не наблюдается, а на ноуте после переустановки лампы вижу.