Назад | Перейти на главную страницу

Mysql не запускает mysqld.sock отсутствует

После того, как я перезагрузил свой сервер, все запустилось нормально, кроме «mysql», я попытался запустить его вручную »/etc/init.d/mysql restart"или с"service mysql restart", это не удается

В файле журнала говорится:

Jul 16 08:13:38 localhost /etc/init.d/mysql[18136]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
Jul 16 08:13:38 localhost /etc/init.d/mysql[18136]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!

Я проверил этот путь, но я не нашел этот файл сокета, пожалуйста, сообщите?

Я попытался запустить mysql в «безопасном режиме», чтобы создать файл sock и файл pid, но это не удалось из-за ошибки «привязать»,

  1. Я изменил IP-адрес в параметре "bind ip" в my.cnf на localhost
  2. запустил mysql в безопасном режиме.
  3. перезапустил mysql в обычном режиме, и все прошло нормально.

Чтобы найти все файлы сокетов в вашей системе, выполните:

sudo find / -type s

В моей серверной системе Mysql сокет был открыт в /var/lib/mysql/mysql.sock

Как только вы найдете, где открывается сокет, добавьте или отредактируйте строку в свой /etc/my.cnf файл с путем к файлу сокета:

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

Иногда сценарий запуска системы, запускающий исполняемый файл командной строки, указывает флаг --socket=path. Этот флаг может переопределить my.cnf местоположение, и это приведет к тому, что сокет не будет найден там, где, как указывает файл my.cnf, он должен быть. Затем, когда вы попытаетесь запустить клиент командной строки mysql, он прочитает my.cnf, чтобы найти сокет, но не найдет его, поскольку он отличается от того, где сервер создал его. Итак, если вам не важно, где находится сокет, просто измените my.cnf, чтобы он соответствовал, должно работать.

Если вы суперпользователь в системе Linux, просто сделайте следующее:

kill -9 <pid_of_mysql>

или иногда вы можете сделать это:

pkill -9 mysqld

После того, как вы это сделаете, вы можете захотеть найти файл pid в /var/run/mysqld/ и удалите это

Убедитесь, что разрешения на вашем сокете таковы, что любой пользователь mysqld может читать / писать в него. Простой тест - открыть его для полного чтения / записи и посмотреть, работает ли он по-прежнему:

chmod 777 '/var/run/mysqld/mysqld.sock'

Если это решит проблему, вы можете настроить разрешения и право собственности на сокет по мере необходимости в зависимости от настроек безопасности.

Кроме того, каталог, в котором находится сокет, должен быть доступен для пользователя, запускающего процесс mysqld.

Ссылка : https://stackoverflow.com/questions/11990708/error-cant-connect-to-local-mysql-server-through-socket-var-run-mysqld-mysq

да, как сказано выше, сначала найдите файл сокета #find / -type s, если вы нашли файл mysqld.sock в каталоге / var / run / mysqld /, проверьте, запущены ли какие-либо экземпляры mysqld или нет #netstat -anpt | grep 3306 or #ps aux | grep mysqld если вы обнаружили какой-либо запущенный процесс, остановите его (#kill -9 pid) и удалите файл сокета. Затем попробуйте перезапустить его, и если mysql не создает файл сокета, попробуйте запустить его, как

#/usr/sbin/mysqld --defaults-file=/etc/mysql/my.cnf --basedir=/usr --datadir=/var/lib/mysql --pid-file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock

Также проверьте свой файл my.cnf (/etc/mysql/my.cnf) и прокомментируйте поле адреса привязки, и если вы нашли какое-либо поле пропуска сети, прокомментируйте его.