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

201

Я установил MySQL на Mac OS X с Mountain Lion homebrew install mysql, но при попытке mysql -u rootя получил следующую ошибку:

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

Что означает эта ошибка? Как я могу это исправить?

shrewdbeans
источник
3
Не опубликовать это как ответ, но вы должны install mysql-serverупаковать, а не толькоmysql
Hanky ​​Panky
3
@HankyPanky, возможно, это было правдой, когда ты это написал. Но в 2016 году заваривать не mysql-serverнадо install.
JJPE
22
Важно отметить, что вы установили с помощью Homebrew, поэтому не обращайте внимания на советы, не относящиеся к homebrew, и начните (и перезапустите при запуске) с помощью brew services start mysqlили (если вам не нужен фоновый сервис) mysql.server start.
Дейв Эверитт
1
Я получил его на работу, но со старым нормальным MySQL 5.7.19. Новая версия mysql@5.7 5.7.24не могла работать, поскольку ссылка на некоторые настройки оставалась связанной со старым mysql, а не с новым пивоваренным погребом mysql@5.7 Keg. Так что спасибо, я попробую это позже
KeitelDOG
1
Эта ошибка также может произойти после запуска, brew upgradeкоторый установит более новую версию mysql, чем ранее установленная.
Джонсонсон

Ответы:

113

Это, вероятно, потому что MySQL установлен, но еще не запущен.

Чтобы убедиться, что он работает, откройте Activity Monitor и в разделе «Все процессы» найдите и убедитесь, что вы видите процесс «mysqld».

Вы можете запустить его, установив «MySQL.prefPane».

Вот полный учебник, который мне помог: http://obscuredclarity.blogspot.in/2009/08/install-mysql-on-mac-os-x.html

shammerw0w
источник
95
Я только что побежал, mysqldи на этом все, проблема была вызвана плохим выключением из-за какого-то жесткого сброса / выключения системы.
ProfNandaa
2
Ни один из предложенных методов не сработал. Для меня это работало, однако, была проблема с разрешением. Бег sudo chown -R _mysql:mysql /usr/local/var/mysql && sudo brew services restart mysql@5.7решил проблему
FooBar
При просмотре в Activity Monitor, mysqlId работает; Чтобы обойти это, просто остановите MySQL и перезапустите его.
JpersaudCodezit
109

Вам нужно будет запустить MySQL, прежде чем вы сможете использовать mysqlкоманду на своем терминале. Для этого беги brew services start mysql. По умолчанию brew устанавливает базу данных MySQL без пароля root. Для обеспечения его запуска: mysql_secure_installation.

Для подключения перспективы: mysql -uroot. rootздесь имя пользователя

М-р Мазедул Ислам Хан
источник
8
Бег sudo chown -R _mysql:mysql /usr/local/var/mysql && sudo brew services restart mysql@5.7решил проблему
FooBar
1
Для тех, кто интересуется mysql_secure_installation, это специальный скрипт mariaDB.
Т. Вуди
3
brew services start mysqlуспех. Но когда я бегу mysql -urootза ним, все равно та же ошибка.
Harper Koo
необходимо ли запускать его каждый раз при запуске Mac или он будет запускаться один раз, чтобы избавиться от ошибки / сохранить работу MySQL или запустить при запуске?
Коннор Лич
Запуск этого раза должно быть достаточно.
Мд Мазедул Ислам Хан,
90

Это произошло после установки homebrew и происходит из-за проблем с разрешениями. Следующие команды устранили проблему.

sudo chown -R _mysql:mysql /usr/local/var/mysql

sudo mysql.server start
Нироджан Сельванатан
источник
2
ты потрясающий @nirojan, я ударился головой о стену: thumsup:
Рави Шарма
Прохладно. Я могу решить мою проблему при переходе на другую учетную запись администратора Mac :)
Уильям Вонг Гарай
Бесконечно благодарен. Я ломаю голову уже более 5 часов. Видела несколько ответов в интернете и только это помогло.
ivange94
Я люблю тебя @nirojan
Енот
Престижность! Но когда я перезапустил свой MacBook, у меня возникла та же проблема.
младший Гантин
46

Бегать: brew info mysql

И следуйте инструкциям. Из описания в формуле:

Set up databases to run AS YOUR USER ACCOUNT with:
    unset TMPDIR
    mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

To set up base tables in another folder, or use a different user to run
mysqld, view the help for mysql_install_db:
    mysql_install_db --help

and view the MySQL documentation:
  * http://dev.mysql.com/doc/refman/5.5/en/mysql-install-db.html
  * http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html

Надеюсь это поможет.

Гаурав Агарвал
источник
35

Как уже отмечали другие, это потому, что MySQL установлен, но служба не работает. Есть много способов запустить службу MySQL, и то, что мне помогло, приведено ниже.

Чтобы запустить сервис:

  1. Перейти в «Системные настройки»
  2. На нижней панели должен быть значок MySql.
  3. Дважды щелкните по нему, чтобы запустить «MySQL Server Status» и нажмите кнопку «Start MySQL Server»

Мой env:

Mac Yosemite 10.10.3

Установленный пакет: /Volumes/mysql-advanced-5.6.24-osx10.8-x86_64

Ithar
источник
@HosMercury, можете ли вы подтвердить, что у вас установлен MySQL
Ithar
Я загружаю и устанавливаю mysql с официальной веб-страницы Mysql. Это решение работает для меня. Спасибо :)
鄭元傑
1
Привет, я также загрузил и установил mysql с официальной веб-страницы, но на панели настроек сервер не активирован (красная точка), когда я нажимаю «запустить сервер sql», он на секунду становится «зеленым» и снова становится красным, Ничего не произошло. Я попробовал 'chown', символическую ссылку на tmp / mysql.socket, удалил / переустановил, brew установил mysql, но все не удалось. установка brew выдает мне неудовлетворенную ошибку, что-то о требовании ОС Sierra или выше. Я бегу эль-капитан. Любая помощь будет оценена.
Спенсер Тринь
24

Решения вращаются вокруг:

  • изменение разрешений MySQL

    sudo chown -R _mysql:mysql /usr/local/var/mysql
  • Запуск процесса MySQL

    sudo mysql.server start

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

mysql -u root -p h127.0.0.1
mondieki
источник
Для меня это была проблема с разрешениями
pfwd
это должно быть: mysql -u root -p -h127.0.0.1
Duc Chi
Вау, такое лучшее решение, чем уничтожить все мои местные вещи. Это было быстрое решение!
Иордания
Я пробовал выше, но в конце концов это сработало: sudo chown -R $ (whoami) $ (brew --prefix) / *
Киран Рут R
15

Предупреждение - этот метод удалит все ваши базы данных в /usr/local/var/mysqlпапке

У меня был установлен MySQL с Homebrew, и единственное, что исправило это для меня, это переустановка MySQL.

На ноутбуке моей компании у меня не было разрешения удалить MySQL с моего компьютера через Homebrew:

$ brew uninstall mysql --ignore-dependencies
Uninstalling /usr/local/Cellar/mysql/8.0.12... (255 files, 233.0MB)
Error: Permission denied @ dir_s_rmdir - /usr/local/Cellar/mysql/8.0.12

Поэтому вместо этого я удалил и переустановил MySQL вручную:

$ sudo rm -rf /usr/local/Cellar/mysql
$ brew cleanup
$ sudo rm -rf /usr/local/var/mysql
$ brew install mysql

И это сработало!

yndolok
источник
Предупреждение - этот метод удалит все ваши базы данных (в папке / usr / local / var / mysql).
Johnsampson
13

Ниже я привожу последние инструкции из brew install mysqlболее новых поисков по этой проблеме:

$ brew install mysql
==> Downloading https://homebrew.bintray.com/bottles/mysql-5.6.26.yosemite.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring mysql-5.6.26.yosemite.bottle.1.tar.gz

To connect:
    mysql -uroot

To have launchd start mysql at login:
  ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Or, if you don't want/need launchctl, you can just run:
  mysql.server start

В моем случае я загрузил MySQL через launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plistи затем смог запустить $ mysqlи быть в пути.

Я надеюсь, что это помогает недавним специалистам по устранению неполадок!

ggentzke
источник
11

Похоже, ваш сервер MySQL не запущен. Я обычно запускаю команду остановки и затем запускаю ее снова:

mysqld stop
mysql.server start

Та же ошибка, и это работает для меня.

Прахар Агарвал
источник
9

Это исправило мою проблему, когда я перезапустил службу mysql. Просто беги:

brew services start mysql
pmventura
источник
8

эта проблема связана с /usr/local/var/mysqlдоступом к папке, я удаляю эту папку и переустанавливаю mysql.

  1. удалить mysql с помощью brew:

    brew uninstall mysql

  2. sudo rm -r /usr/local/var/mysql

  3. brew install mysql@8.0
  4. mysql -u root

Это решение отлично работает для меня! Но вы потеряли все свои базы данных! ПРЕДУПРЕЖДЕНИЕ!

barsmaga
источник
2
Это, скорее всего, решит проблему, однако для будущих читателей следует предупредить, что это уничтожит все ваши базы данных. Это в основном трудная переустановка MySQL. Я знаю, что контекст вопроса был новой установкой, но некоторые люди, которые сканируют, могут просто попробовать это, не зная об ущербе, который он может нанести при существующей / производственной установке.
efru
1
Это на самом деле не решение. Это «Вы пробовали включать и выключать снова?»
Берри М.
6

Ох, это заняло у меня некоторое время, чтобы выяснить. Я видел это в комментарии. После установки mysql с помощью brew и запуска службы (возможно, с использованием sudo brew services start mysql), выполните:

$ mysqld

И MySQL должен работать для вас после этого.

FooBar
источник
5

Для меня это было просто, как бег:

/usr/local/opt/mysql/bin/mysqld_safe

вместо того mysqld

Кенни Кейсон
источник
1
Это сработало для меня. Не знаю почему, но это может быть связано с ошибкой перезапуска Mac OS на моей машине
kraftydevil
3

Я нашел решение своей проблемы. Это было действительно потому, что мой сервер MySQL не работал.

Это было вызвано тем, что MySQL не был правильно настроен на моей машине, поэтому не мог работать.

Чтобы исправить это, я использовал скрипт, который устанавливает MySQL на Mac OSX Mountain Lion , на котором должны быть установлены недостающие файлы.

Вот ссылка: http://code.macminivault.com/

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

shrewdbeans
источник
3

В моем случае это был просто вопрос удаления файла блокировки.

sudo rm -f /tmp/mysql.sock.lock
Брэд Джонсон
источник
3

Я прошел через эту проблему, и мне удалось запустить сервер MySQL, используя приведенное ниже решение

Установите mysql через .dmg( https://dev.mysql.com/downloads/mysql/5.7.html ), вы получите служебную панель mysql в системных настройках, затем запустите mysql с панели и попробуйте

mysql -u root -p

Изображения прикреплены для справки

Системные настройки

Mysql панель

Аравинд Вемула
источник
2

После работы над этим в течение нескольких часов мне удалось перейти в / etc / mysql / и отредактировать файл my.cnf. Добавьте следующее

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
Jackstine
источник
1
Это тоже помогло мне, хотя для моей версии os / mysql это было: /etc/my.conf, а сокет был в /var/lib/mysql/mysql.sock /var/log/mysqld.log должен указывать Вы, где файл сокета.
keithpjolley
1

Я перепробовал все возможные способы решения этой проблемы, например ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock, удалите и переустановите mysql, убедитесь, что mysql работает на xampp, но все равно он не работает ,

Наконец, я открываю my.cnf (файл конфигурации) и копирую путь к сокету (обязательно скопируйте полный путь, иначе он не будет работать). Затем я выполняю эту команду в моем терминале

mysql --socket=/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

И вот, MySQL запускает.

Это решение будет работать, только если ваш MySQL показан работающим в Xampp / Ampps, но в терминале он все еще не подключается к правому сокету, когда вы уже пытались что-то вроде:

./mysql -u root

или

brew services start mysql

Надеюсь, это поможет!

Кейт Ли
источник
Я также попробовал каждое предлагаемое решение из этого поста, и оно не сработало. Вам нужен установленный xampp? Я не знаком с этим. Я только установил версию GPL MySQL сервера с официального сайта (.DMG). Я не верю, что у меня есть это приложение - XAMPP. Можете ли вы уточнить? Спасибо.
Спенсер Тринь
1

только это помогло мне brew services start --all (попробовав все ответы)

user10604324
источник
2
Объясните, как это связано с вопросом.
Менталург
1

Я бы порекомендовал вам бежать

  mysql.server start

перед тем как

  mysql -u root -p

чтобы убедиться, что сервер MySQL работает, прежде чем пытаться войти в него

Это происходит много раз, когда вы запускаете / перезапускаете компьютер, на котором не работает ни один сервер mysql.

mwangaben
источник
1

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

Я использую доморощенный. Единственное, что раньше исправляло это для меня:

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

Этим утром проблема вернулась после того, как моя машина решила выключиться на ночь. Единственное, что исправило это сейчас, - это обновление MySQL.

brew upgrade mysql
JKL
источник
0

В моем случае сразу после установки MAMP доступ к mysql из терминала выдавал ту же ошибку сокета. В конце все, что он хотел, было перезагрузкой, и это работает.

Дивакер Трипати
источник
0

Множество других полезных ответов здесь, но ничто не исправило это для меня. В конечном счете, ничто из того, что я нашел на этом сайте или других, не получило бы никакой версии MySQL от Homebrew, работающей на меня.

Было просто безболезненно просто загрузить DMG с https://dev.mysql.com/downloads/file/?id=479114 (найти нужную версию) и позволить мастеру установить ее для меня. Единственным другим ручным шагом было добавление /usr/local/mysql/binв мою PATH.

Я бы порекомендовал этот вариант, если варево доставляет вам неприятности.

Обновление - если это по-прежнему не помогает, попробуйте полностью очистить MySQL перед установкой через DMG. Следуйте этим инструкциям: https://gist.github.com/vitorbritto/0555879fe4414d18569d

Патрик
источник
Я установил через файл DMG тоже, но я все еще получаю эту ошибку сокета. mysql --version работает для меня и --help, но больше ничего. Я добавил путь, чтобы заставить работать команды --version и --help. Можете ли вы дать совет? Спасибо.
Спенсер Тринх
Смотрите обновление об очистке MySQL в первую очередь. Это было исправление для меня и нескольких коллег.
Патрик
0

Попробуй это

rm -rf /usr/local/var/mysql && brew postinstall mysql@5.7 && brew services restart mysql@5.7
Голам Сорвар
источник
0

Обнаружена похожая проблема после обновления до ОС Catalina. После запуска команды mysqld я обнаружил, что с файлом log-файлов возникли некоторые проблемы. Это может быть другим для других.

$ mysqld

Проблема была

2019-10-16T04:58:59.174474Z 0 [ERROR] Could not open file '/var/log/mysql/error.log' for error logging: No such file or directory
2019-10-16T04:58:59.174508Z 0 [ERROR] Aborting

Решил это, создав его и применив соответствующие разрешения.

sudo mkdir -p /var/log/mysql
sudo touch /var/log/mysql/error.log
sudo chown -R _mysql:mysql /var/log/mysql/

Перезапустите MySQL

brew services restart mysql@5.7

Проблема была решена.

mysql -uroot -proot
Саиф Хан
источник
0

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

Просто обновите свою конфигурацию клиента MySQL (например /usr/local/etc/my.cnf):

[client]
port = 3306
host=127.0.0.1
protocol=tcp
Nicodemuz
источник
-4
  1. Удалите MySQL.
  2. Удалить /usr/local/var/mysql/.
  3. Установите MySQL.
Амод Кулкарни
источник
1
Разве это не уничтожит все базы данных, которые у вас могут быть? Для меня это выглядит довольно сложным решением, особенно если учесть, что, вероятно, проблема в том, что MySQL не работает.
Мартин Турной
да, будет, но в соответствии с вопросом, это была новая установка и, следовательно, предполагалось, что не будет никаких баз данных.
Амод Кулкарни