MySQL ошибка can’t connect to local mysql server through socket var/run/mysqld.sock (2)

Автор: | 28.04.2019

Ниже описаны некоторые шаги, которые могут помочь в решении данной проблемы.

Найти все сокет файлы, которые есть в системе:

  • sudo find / -type s

Посмотреть, что значит код ошибки (2):

  • perror 2

Посмотреть кем занят сокет:

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

Одно из решений, в случае если директории с сокетом нет:

  • sudo /etc/init.d/mysql start
  • sudo mkdir /var/run/mysqld
  • sudo mkfifo /var/run/mysqld/mysqld.sock
  • sudo chown -R mysql /var/run/mysqld

Еще варианты, проверить права пользователя mysql. Он должен иметь полные права на этот файл mysqld.sock

Также не будет лишним заглянуть в лог ошибок mysql:

  • tail -f /var/log/mysql/error.log

Можно попробовать прописать в файле конфигурации /etc/mysql/my.cnf следующую строчку:

  • socket = /var/lib/mysql/mysql.sock

Можно запускать mysql с флагом —socket = path, он переопределит сокет из my.cnf

Можно попробовать создать символьную ссылку вида:

  • sudo ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock

, чтобы исключить проблемы связанные с правами доступа. Т.е. файл сокета будет храниться во временной папке, но ссылка на него будет из папки mysql. У пользователя mysql также должны быть права на папку /tmp, если не определена другая временная папка.