Недавно я попытался установить MySQL с помощью homebrew ( brew install mysql
), и когда я пытаюсь запустить его, я получаю следующую ошибку:
ОШИБКА 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет '/tmp/mysql.sock' (2)
Нет ни /tmp/mysql.sock
кота /var/lib/mysql.sock
.
Я искал и не нашел ни одного mysql.sock
файла.
Как я могу это исправить?
mysqld
чтобы все проверить и убедиться, что MySQL в последний раз правильно завершил работу. Если у него было «грязное» выключение (например, если аккумулятор ноутбука вынуждает выключить систему), это должно очистить его. Затем вы можете запустить сервер MySQL снова:mysql.server start
.Ответы:
Когда вы запустили сервер через
вы должны увидеть сокет в /tmp/mysql.sock . Однако система, похоже, ожидает его в /var/mysql/mysql.sock . Чтобы исправить это, вам нужно создать символическую ссылку в / var / mysql :
Это решило проблему для меня. Теперь мой phpMyAdmin успешно работает с localhost и 127.0.0.1 .
Кредит принадлежит Генри
источник
mysql.server start
я получаюERROR! The server quit without updating PID file (/usr/local/var/mysql/lyahdav-C02R32HCG8WM.pid)
. Мне нужна была более старая версия MySQL, установленная черезbrew install mysql@5.6
.mysql.server start
исправил это для меняПохоже, ваш сервер mysql не запущен. Обычно я запускаю команду остановки, а затем запускаю ее снова:
Та же ошибка, и это работает для меня.
источник
mysqld &
за комментарий выше, но я думаю, что он, вероятно, будет делать то же самое, посколькуmysqld stop
я почти уверен, что в моем случае это произошло из-за неправильного завершения работы.У меня остались некоторые каталоги от другой установки mysql (8.0), которые не были удалены.
Я решил это, выполнив следующие действия:
Сначала удалите mysql
Удалите папки / файлы, которые не были удалены
Переустановите mysql и свяжите его
Включите и запустите службу
источник
Попробуйте подключиться, используя «127.0.0.1» вместо «localhost».
источник
Если вы видите «mysql остановлен» при выполнении следующей команды;
и если вы можете запустить mysql с помощью следующей команды;
это означает; mysql может запускаться вручную, но он не запускается автоматически при запуске операционной системы. Добавление mysql к службам решит эту проблему. Для этого вы можете запустить команду ниже;
После этого вы можете перезагрузить операционную систему и попробовать подключиться к mysql, чтобы проверить, запускается ли он автоматически. Я сделал то же самое и перестал получать ошибку ниже;
источник
Этот файл
/tmp/mysql.sock
, вероятно, представляет собой именованный канал, поскольку он находится во временной папке. Именованный канал - это специальный файл, который никогда не сохраняется постоянно.Если мы создадим две программы и хотим, чтобы одна программа отправляла сообщение другой программе, мы могли бы создать текстовый файл. Одна программа записывает что-то в текстовый файл, а другая программа читает то, что написала другая программа. Вот что такое канал, за исключением того, что он не записывает файл на жесткий диск нашего компьютера, IE не сохраняет файл постоянно (как мы это делаем, когда создаем файл и сохраняем его).
Socket - это то же самое, что и Pipe. Разница в том, что сокеты обычно используются по сети - между компьютерами. Socket отправляет информацию на другой компьютер или получает информацию с другого компьютера. И каналы, и сокеты используют временный файл для совместного использования, чтобы они могли «общаться».
Трудно определить, какой из MySql используется в этом случае. Хотя это не имеет значения.
Команда
mysql.server start
должна заставить «сервер» (программу) запустить свой бесконечный цикл, который создаст этот специальный файл и будет ждать изменений (listen
для записи).После этого распространенной проблемой может быть то, что программа MySql не имеет разрешения на создание файла на вашем компьютере, поэтому вам, возможно, придется предоставить ей привилегии root.
источник
mysql.server start
,mysql.server stop
а затем снова запустил службу через homebrew,brew services start mysql@5.7
и все прошло гладко.После установки macos mojave пришлось стереть папку mysql,
/usr/local/var/mysql
а затем переустановить через,brew install mysql
иначе вещи, связанные с разрешениями, будут возникать повсюду .источник
/usr/local/var/mysql
приведет к удалению всех существующих баз данных!У меня такая же ошибка, и вот что мне помогло:
источник
Чтобы добавить к этим ответам, в моем случае у меня не было локального сервера mySQL, он работал внутри контейнера докеров. Таким образом, файл сокета не существует и не будет доступен для клиента «mysql».
Файл sock создается mysqld, и mysql использует его для связи с ним. Однако, если ваш сервер mySql не работает локально, он не требует файла sock.
При указании имени хоста / ip файл sock не требуется, например
источник
Поскольку я потратил довольно много времени, пытаясь решить эту проблему, и всегда возвращался на эту страницу, когда искал эту ошибку, я оставлю свое решение здесь, надеясь, что кто-то сэкономит время, которое я потерял. Хотя в моем случае я использую mariadb, а не MySql, вы все равно можете адаптировать это решение под свои нужды.
Моя проблема
то же самое, но мои настройки немного отличаются (mariadb вместо mysql):
Установил mariadb с homebrew
Запустил демон
Пытался подключиться и получил указанную выше ошибку
Мое решение
узнайте, какие
my.cnf
файлы используютсяmysql
(как предлагается в этом комментарии ):проверьте, где запущен файл сокета Unix (почти как описано здесь ):
(вы можете захотеть
grep mysql
вместо mariadb)Добавьте найденный вами файл сокета
~/.my.cnf
(при необходимости создайте файл) (при условии, что он~/.my.cnf
был указан при запускеmysql --verbose ...
команды сверху):Перезагрузите свой mariadb:
После этого я смог запустить mysql и получил:
Поэтому я запускаю команду с привилегиями суперпользователя и после ввода пароля получил:
Ноты:
Я не совсем уверен насчет групп, в которые нужно добавить сокет, сначала у меня был [клиент-сервер], но потом я решил, что [client] должно быть достаточно. Я изменил его, и он все еще работает.
При запуске
mariadb_config | grep socket
я получаю:--socket [/tmp/mysql.sock]
что немного сбивает с толку, поскольку кажется, что/usr/local/mariadb/data/mariadb.sock
это реальное место (по крайней мере, на моей машине)Интересно, где я могу настроить
/usr/local/mariadb/data/mariadb.sock
его/tmp/mysql.sock
так, чтобы я мог использовать настройки по умолчанию вместо того, чтобы редактировать мои.my.cnf
(но я слишком устал, чтобы понять это ...)В какой-то момент я также делал то, что упоминалось в других ответах, прежде чем придумать это.
источник
Вам нужно будет запустить
mysql_install_db
- проще всего, если вы находитесь в каталоге установки:В качестве альтернативы, вы можете подать
mysql_install_db
вbasedir
параметр , как в следующем:источник
Я столкнулся с той же проблемой на своем Mac и решил ее, выполнив следующие инструкции
https://mariadb.com/resources/blog/installing-mariadb-10116-mac-os-x-homebrew
Но не забудьте убить или удалить старую версию, прежде чем продолжить.
Команды:
источник
После перезапуска мне не удалось подключиться к локальному mariadb, поиск также привел меня на эту страницу, и я хотел поделиться с вами своим решением.
Я заметил, что каталог my.cnf.d в / usr / local / etc / отсутствует.
Это известная ошибка homebrew, которая там описана и решена. https://github.com/Homebrew/homebrew-core/issues/36801
быстрый способ исправить: mkdir /usr/local/etc/my.cnf.d
источник
brew update
и перезапустить.brew services list
Результат показывает статус mariadbstarted
желтым цветом. Спасибо за чаевые.При запуске mysql_secure_installation и вводе нового пароля я получил:
Я заметил, пытаясь сделать следующее из этого ответа :
Он ничего не вернул, и я понял, что это означает, что не было файла .sock.
Итак, я добавил следующее в свой файл my.cnf (либо в /etc/my.cnf, либо в моем случае /usr/local/etc/my.cnf ).
Под:
Под:
Это было основано на этом сообщении .
Затем остановите / запустите mysql снова и повторите установку mysql_secure_installation, что наконец позволило мне ввести мой новый пароль root и продолжить установку с другими настройками.
источник
просто чтобы завершить эту ветку. поэтому MAMP (PRO) используется довольно часто
путь здесь
источник
Я вручную запустил mysql в панели системных настроек, инициализировав базу данных, а затем запустив ее. Это решило мою проблему.
источник
В моем случае виновник был найден в лог-файлах:
Поэтому я переименовал,
ib_logfile0
чтобы избавиться от ошибки (ib_logfile1
потом пришлось поступить так же ).источник
У меня была такая же проблема. Попробовав все эти методы безуспешно, я сделал следующее:
в другой консоли:
Я увидел следующую ошибку:
Поэтому я изменил
tc.log
расширениеtc.log.txt
и перезапустил mariadbи готово!
источник
Для меня я давно установил
mariadb
, потом установилmysql@5.7
.Когда я выполнил
mysql -uroot
, я получаю сообщение об ошибке:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Читаем ответы:
mariadb
/usr/local/var/mysql
mysqld --initialize
Тогда я смог
mysql -uroot -p
источник
Это работает для меня:
источник