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

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

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

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

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 ?

В большинстве случаев можно "выключить и включить"

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

Но вернёмся к разбору самой ошибки! 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

Построчно:

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

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

Комментарии

Фото
74 дня назад Casi Nostro

"где видно, кто занял файл" где это видно? конкретней пишите

Фото
07.12.2018 drakhis

wokr fine

sudo mkdir /var/run/mysqld
sudo touch /var/run/mysqld/mysqld.sock
sudo chown -R mysql /var/run/mysqld
systemctl restart mysql

Фото
07.12.2018 1337 900913

Да, именно так. Собственно, как раз последний вариант + перезапуск mysql.

Фото

sudo lsof /var/run/mysqld/mysqld.sock выводит пустоту.

А это: sudo mkdir /var/run/mysqld sudo mkfifo /var/run/mysqld/mysqld.sock sudo chown -R mysql /var/run/mysqld не решило проблему.

Фото
14.11.2017 1337 900913

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

Пробовал? (выключить и включить)

Фото
14.11.2017 Solverin

Та же ошибка ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Но рецепт не помогает (( После перезагрузки сервера lsof: status error on /run/mysqld/mysqld.sock: No such file or directory

Фото
14.11.2017 Solverin

sudo mkfifo /var/run/mysqld/mysqld.sock не создает файл (

Фото

как вариант попробуй mysqld_safe --skip-grant-tables &

Фото

как вариант попробуй mysqld_safe --skip-grant-tables &

Нравится Disqus? – Пожалуйста!
Фото Нулевое занятие по Операционным Системам
Предыдущая запись:
Нулевое занятие по Операционным Системам
Фото Как обновить git fork (на github)
Следующая запись:
Как обновить git fork (на github)