Не удалось найти mysql.sock

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

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

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

Ответ 1

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

run

% mysqladmin variables

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

Ответ 2

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

mysql_config --socket

UPDATE

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

sudo rm -rf /etc/my.cnf

И затем перезагрузите mysql:

brew services restart mysql

Файл был создан, и mysql теперь работает хорошо.

Ответ 3

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

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

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

% mysqld --verbose --help | grep ^socket

Ответ 4

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

netstat -ln | grep mysql

Mac OSX

Ответ 5

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

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

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

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

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

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

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

Ответ 6

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

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

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

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

Ответ 7

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

Мой файл sock определенно находится в /tmp, и ERROR, который я получаю, ищет его в/var/lib/(не просто /var ). Я связался с /var и/var/lib сейчас, и я все еще получение ошибки "Невозможно подключиться к локальному серверу MySQL через сокет" var/lib/mysql.sock(2) ".

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

Ответ 8

Чтобы обновить базу данных локации, я запустил

/usr/libexec/locate.updatedb

Ответ 9

$ mysqladmin variables | grep sock

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

Ответ 10

(Q1) Как найти файл сокета?

Место для файла сокета по умолчанию -/tmp/mysql.sock, чтобы найти файл сокета для вашей системы.

mysqladmin variables | grep socket

Если вы только что установили MySql, файл mysql.sock не будет создан до запуска сервера. Используйте эту команду, чтобы запустить его.

sudo launchctl load -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

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

mysqladmin --user root --password variables | grep socket

(Q2) Как обновить индекс локации

Обновите локацию db с помощью этой команды.

sudo /usr/libexec/locate.updatedb

Ответ 11

Я получаю ту же ошибку в Mac OS X 10.11.6:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

После многого мучения и копания в советах здесь и в связанных вопросах, ни одна из которых, казалось, не устранила проблему, я вернулся и удалил установленные папки, а просто сделал brew install mysql.

По-прежнему возникает ошибка с большинством команд, но это работает:

/usr/local/bin/mysqld

и возвращает:

/usr/local/bin/mysqld: готов к подключению.

Версия: '5.7.12' socket: '/tmp/mysql.sock' порт: 3306 Homebrew

Ответ 12

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

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

sudo apt-get install mysql-server

2) Выполняйте шаги конфигурации терминала

sudo mysql_secure_installation

3) Проверить статус: (Должен вернуть "Активен: активен (работает)" )

systemctl status mysql.service

Ответ 13

Я не могу ответить на вопрос №1, но обновить базу данных locate, запустите:

updatedb