Не удается найти mysql.sock - PullRequest
       42

Не удается найти mysql.sock

74 голосов
/ 14 апреля 2009

Мне просто пришлось переустановить mysql, и у меня возникла проблема с его запуском. Он не может найти сокет (mysql.sock). Проблема в том, что я тоже не могу. В моем терминале Mac OS X 10.4 я набираю: locate mysql.sock и получаю обратно /private/tmp/mysql.sock. Имеет смысл, что файл сокета существует в этом месте, но на самом деле его нет.

  1. Как найти файл сокета?

  2. Если locate возвращает ложное местоположение, у него должна быть какая-то память и, возможно, индексы. Как я могу обновить этот индекс?

Ответы [ 14 ]

127 голосов
/ 17 декабря 2010

чтобы ответить на первую часть вашего вопроса:

пробег

% mysqladmin -p -u <user-name> variables

и проверьте переменную 'socket'

36 голосов
/ 09 августа 2013

Это решило мою проблему

mysql_config --socket

UPDATE

mysql_config может сказать нам, где должен быть файл mysql.sock, но в моем случае файл не существует. Итак, я удалил my.cnf:

sudo rm -rf /etc/my.cnf

А потом перезапустил mysql:

brew services restart mysql

Файл создан, и MySQL теперь работает нормально.

17 голосов
/ 14 апреля 2009

Файл сокета должен быть создан автоматически при запуске демона MySQL.

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

Чтобы узнать, где файл должен быть, используйте:

% mysqld --verbose --help | grep ^socket
15 голосов
/ 09 июня 2015

Это нашло это для меня:

netstat -ln | grep mysql

Mac OSX

10 голосов
/ 27 июня 2013

Моей проблемой был также файл mysql.sock.

В процессе установки drupal я должен был сказать, какую базу данных я хочу использовать но моя база данных не была найдена

mkdir /var/mysql
ln -s /tmp/mysql.sock /var/mysql/mysql.sock

система ищет mysql.sock, но она не в том каталоге

все, что вам нужно сделать, это связать его;)

Мне потребовалось много времени, чтобы погуглить всю важную информацию, но мне потребовались даже часы, чтобы понять, как адаптироваться, но теперь я могу представить результат: D

ps: если вы хотите быть точным, вы должны связать свой /tmp/mysql.sock-file (если он также находится в вашей системе) с каталогом, заданным php.ini (или php.default.ini), где pdo_mysql.default_socket= ...

4 голосов
/ 06 января 2016

Я получил точный путь, используя:

netstat -ln | grep -o -m 1 -E '\S*mysqld?\.sock'

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

MySQL должен быть запущен на вашем компьютере, чтобы это работало. Работает и для MariaDB.

2 голосов
/ 03 мая 2014

Похоже, что первоначальные вопросы возникли из-за путаницы в том, а) где находится файл и б) где его ищут (и почему мы не можем найти его там, когда делаем поиск или grep). Я думаю, что точка зрения Альнитака состояла в том, что вы хотите найти, где он был связан - но grep не покажет вам ссылку, верно? Файл не живет там, так как это ссылка, это просто указатель. Вам все еще нужно знать, где разместить ссылку.

мой файл sock определенно находится в / tmp, и ОШИБКА, которую я получаю, ищет его в / var / lib / (не только / var), я связался с / var и / var / lib сейчас, и я до сих пор получение ошибки «Не удается подключиться к локальному серверу MySQL через сокет« var / lib / mysql.sock »(2)».

Обратите внимание на (2) после ошибки .... Я обнаружил в другом потоке, что это означает, что сокет действительно может быть использован, но что-то не так с самим сокетом - так что для выключения машины - полностью - так что розетка закрывается. Затем перезагрузка должна исправить это. Я попробовал это, но у меня это не сработало (теперь я спрашиваю, перезапустил ли я слишком быстро? Правда?) Может быть, это будет решением для кого-то другого.

1 голос
/ 28 марта 2014
$ mysqladmin variables | grep sock

Попробуйте вместо этого, это выведет требуемый результат, избавившись от несвязанной информации.

0 голосов
/ 21 мая 2018

К сожалению, ничего из вышеперечисленного не сработало в моем случае. Но наконец я нашел решение.

Чтобы найти файл mysql.sock, просто откройте менеджер xampp, выберите MySQL и нажмите «Настроить» справа. На панели конфигурации нажмите Open Conf File и просто найдите mysql.sock, нажав сочетание клавиш CMD + F.

В моем случае владелец mysql.sock был изменен, и мне пришлось изменить его обратно на root admin с помощью: chmod root: admin mysql.sock

После этого был осуществлен доступ к базе данных.

0 голосов
/ 08 июня 2017

Я не смог найти сокет mysql, поэтому переустановил сервер mysql (все таблицы и настройки phpmyadmin были сохранены). Вот команды:

1) Установить

sudo apt-get установить mysql-server

2) Выполните шаги по настройке терминала

sudo mysql_secure_installation

3) Проверить статус: (Должен возвращаться «Активно: активно (работает)»)

systemctl status mysql.service

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...