четверг, 14 июня 2018 г.

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'



https://900913.ru/2017/10/06/mysqld-sock-not-found/
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 уже должен нормально работать.

Комментариев нет:

Отправить комментарий