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-сокету. А такое может произойти по двум причинам:
- кто-то уже занял сокет;
- 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 уже должен нормально работать.
- Как создать неизменяемый файл в Linux / MacOS / FreeBSD
- Bash < потоки ввода > вывода && управляющие конструкции || коротко о главном
- Лучше плохо, но сейчас. Взгляд на пути развития ПО
- Решаем проблему ERROR 1348 column password is not updatable при обновлении пароля root в MySQL / MariaDB
- Решаем проблему ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number и Error Code: 1064 в MySQL / MariaDB

Будьте аккуратны – с каждой заметкой вы становитесь чуть ближе к высшему образованию в областях "компьютерные науки" и "компьютерная безопасность".

Уже некоторое время силами сообщества 900913 переводим tldr на русский – краткие руководства по командам Linux, MacOS и т.д. В октябре за переводы взялись с новой силой – возможно, тому причина hacktoberfest от digitalocean и github.