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

«Не удается подключиться к локальному серверу MySQL через сокет» и удаленный сокет

Это частая ошибка, но все ответы не решают мою проблему:

Когда я запускаю mysql, у меня есть:

ОШИБКА 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (2)

Поэтому, прочитав несколько ответов, я меняю его в my.cnf на /var/lib/mysql/mysql.sock, а также /tmp/mysql.sock, но у меня каждый раз возникает одна и та же проблема.

В отчаянии я удаляю mysql.sock в / var / run / mysqld, но он не создается, когда я mysqld start или service mysql start (после остановки каждого).

Я использую Ubuntu 10.04 с сервером LAMP.

Спасибо.

Проверьте права доступа к этим каталогам или то, что файл использовался.

Вот сценарий разрешения. Предположим, вы устанавливаете MySQL и играете как root, вам удалось запустить базу данных и случайно заставить ее записать в каталог / tmp именованный сокет с правами root. Вы убиваете процесс насильственным образом, и очистки не происходит.

Затем, позже, вы как обычный пользователь пытаетесь запустить MySQL, который может захотеть использовать специального пользователя mysql, который дистрибутив поместил в вашу систему. Поскольку названный сокет существует, он не работает. Поскольку у него нет разрешения на удаление рутинного мусора, это не работает.

Затем вы перезагружаетесь, что может стереть все / tmp перед запуском системы. Теперь там ничего нет, сервер MySQL подходит, никаких конфликтов, и все волшебным образом работает.

Я не говорю, что именно это произошло, но большинство моих проблем, когда что-то подобное происходило, оказывалось, что в какой-то каталог не было разрешения на запись по пути или файл уже был там и не мог быть удален смертным аккаунтом.

Однако рад слышать, что вы исправили это.

Проблема решена: я перезапускаю свой сервер, и он работает нормально :) (wtf?).

Соответствующие команды:

/etc/init.d/mysqld restart
/etc/init.d/mysqld stop
/etc/init.d/mysqld start