Не удается подключиться к локальному серверу MySQL через сокет «/tmp/mysql.sock» (2)

143

Я установил сервер MySQL и пытаюсь подключиться к нему, но получаю сообщение об ошибке:

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

Я проверил мой каталог / tmp, и нет mysql.sock. Я не могу найти mysql.sock нигде. Я читал, что это может быть в

    /var/lib/mysql/mysql.sock

Но я тоже там проверил, и там нет даже каталога mysql, только некоторые постфиксы внутри / lib. Может ли кто-нибудь помочь мне с этой проблемой?

user3344382
источник
2
Я работаю на Mac OS X
user3344382
Здравствуйте, вы можете вставить команду, которую вы используете для подключения? Также вы начали MySQL?
Марк Батлер
@MarkButler Я использую эту команду: / usr / local / mysql / bin / mysql
user3344382
Да, просто сервер не работал. Тем не менее, я до сих пор не могу понять, где находится mysql.sock, могут ли быть какие-то другие скрытые места, где он может находиться?
user3344382
Эта ошибка очень общая и может быть по разным причинам. Для аккуратной резюме смотрите здесь: medium.com/@7anac/...
Janac Мина

Ответы:

272

Попробуйте запустить сервер MySQL:

mysql.server start

Кейси Робинсон
источник
45
ОШИБКА! Сервер вышел без обновления файла PID
bastianwegge
1
@wegginho Возможное решение для вашего сообщения об ошибке, если вы установили MySQL через homebrew PID ошибка при запуске сервера MySQL
Кейси Робинсон
забыл запустить службы MySQL!
GeekHades
1
@bastianwegge попробуйте проверить файл ошибки в /usr/local/var/mysql/USERNAME.local.err, в моем случае мне пришлось удалить /tmp/mysql.sock, а затем перезапустить, используяmysql.server start
Josh Bradley
61

Я получил тот же вопрос после обновления OS X Yosemite, что ж, решение довольно простое, проверьте системные настройки -> mysql, статус был STOP. Просто перезапустите его, и теперь он отлично работает на моем Mac.

Керен
источник
1
Спасибо огромное @keren так просто, я потратил 45 минут на изменение настроек в моем файле my.cnf, когда все это время было единственной проблемой.
kandroidj
Работал на меня тоже спасибо, не было идеи с точки зрения установки DMG.
Рамешвар Вейхаре
Это, к сожалению, мне не помогло
simhumileco
Просто и круто!
Десмонд DAI
6
Хм что? Почему в Системных настройках OSX есть опция MySQL?
AlxVallejo
45

Для MAMP

ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

С https://coderwall.com/p/w5kwzw/solved-can-t-connect-to-local-mysql-server-through-socket-tmp-mysql-sock

ОБНОВЛЕНИЕ: Каждый раз, когда мой компьютер перезагружается, я должен ввести эту команду, поэтому я создал ярлык.

Выполните следующие действия в терминале:

~: vi ~/.profile

Добавить

alias ...='source ~/.profile'
alias sockit='sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock'

Сохранить.

В типе терминала:

~: ... исходный код .profile.

Теперь в терминале вы можете просто набрать

~: sockit
Bryan
источник
1
Потрясающие. Просто исправление, которое я искал.
JoshHighland
1
Я возвращался к этому посту несколько раз, и он всегда работает.
Трей Коупленд
Обновлен до mysql 5.7.1 вне MAMP и столкнулся с ошибкой. Это исправило это для меня
Дэвид
Если вы работаете в MacBook и видите MAMP, это работает
kelrob-dev
32

Следующая команда разрешила мою проблему:

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

sudo mysql.server start
Никеш Сувал
источник
1
После поиска в течение 3 часов это решило мою проблему. Я только что установил mysql через homebrew, brew install mysqlно ни одна из команд homebrew не сказала мне, что запуск работает нормально. Это заставило все проблемы уйти ... Спасибо! Что именно это первая строка, которую вы написали? Что это означает?
mesqueeb
Спасибо, отлично работает!
Нироджан Сельванатан
1
Привет для меня это было: sudo chown -R _mysql: mysql / usr / local / mysql / data
Джунаид
chown -R сменить владельца -R рекурсивно
Hos Mercury
Нетронутый 10.13.1 и доморощенный выдали эту ошибку при установке mariadb (10.2.10). Это изменение владельца исправило это, поэтому теперь sudo brew services start mariadbтакже работает для запуска mariadb при загрузке (не только при входе в систему). УРА! Спасибо!
iggie
16

Перепробовав все решения он работал только у меня после указания хоста

mysql -u root -p -h127.0.0.1

при запросе пароля

Enter password:

нажмите Ввод

и это будет работать, если все в порядке, как указано выше.

Хос Меркурий
источник
2
Я настроил mysql с помощью контейнера Docker с помощью Docker для Mac и сопоставил его порт 3306 с Mac. Без добавления -h 127.0.0.1, он всегда подскажет Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2); после добавления аргумента все работает хорошо.
Эви Сонг
1
Это потому, что прохождение 127.0.0.1 не использует сокет, я думаю. Больше узкого обходного пути.
Лукас Морган
1
Запуск mysql -u root -h127.0.0.1 без -pфлага работал для меня, так как, когда я установил MySQL, я никогда не запускал mysql_secure_installationкоманду. Насколько я понимаю, в этом случае установка по умолчанию не требуется пароль.
Ричи Томас,
1
Работал как шарм!
Пандука
10

После нескольких часов борьбы, единственное, что сработало, было

sudo mysql.server start

Затем выполните безопасную установку с

mysql_secure_installation 

Затем подключитесь к БД через

mysql -uroot -p

Mysql устанавливается через доморощенный и версия

Server version: 5.7.21 Homebrew

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

Кришнадас ПК
источник
9

В вашем конфигурационном файле mysql, который присутствует, /etc/my.cnfвнесите следующие изменения и перезапустите mysqldпроцесс dameon

[client]
socket=/var/lib/mysql/mysql.sock

Как хорошо проверить эту тему

Не удается подключиться к локальному серверу MySQL через сокет '/tmp/mysql.sock

Рахул
источник
В каталоге / etc нет файла my.cnf. Я думаю, что могу создать этот файл вручную, но, как я уже сказал, в / var / lib нет каталога mysql, как может быть сокет?
user3344382
Проверьте связанную ветку, которую я разместил, а также проверьте, работает ли ваш сервер MySQL на самом деле или нет.
Рахул
Я нашел файл в/etc/mysql/my.cnf
Девон
если вы установили с brew, вы должны использовать его в /tmp/mysql.sockкачестве места для носка
Марк Шуст в M.academy
8

Следующее решило мою проблему:

Проверьте, где находится ваш сервер MySQL: netstat -nlp. Если он использует протокол TCP, используйте 127.0.0.1 при подключении к БД вместо «localhost».

Проверьте MySQL документ здесь

Umesh
источник
кажется, это работает для меня и доказывает, что MySQL жив, но почему я не могу подключиться к локальному сокету?
Колин Д.
8

Попробуйте это, это сработало для меня.

sudo /usr/local/mysql/support-files/mysql.server start

Васант Васу
источник
Почему этот путь? при использовании команды "где находится mysql" (MAC OS), выдающей /usr/local/mysql/bin/. Как определить этот путь в Mac?
Vineeth Bhaskaran
Я., Путь меняется соответственно
vasanth vasu
4

Если вы используете XAMPP в Mac OS X и установили MySQL с Homebrew, у вас может быть эта проблема. В окне диспетчера XAMPP перейдите в раздел «Управление серверами» и выберите MySQL, затем нажмите «Настроить» и откройте файл конфигурации, там у вас есть путь к файлу сокета, введите путь в конфигурацию хоста MySQL, и он должен работать.

Это что-то вроде этого:

...
[client]
#password   = your_password
port        = 3306
socket      = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
...

тогда, например, в Django:

...    
DATABASES = {
        "default": {
            "ENGINE": "django.db.backends.mysql",
            "NAME": "database_name",
            "USER": "user",
            "PASSWORD": "password",
            "HOST": "/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock",
            "PORT": "",
        }
    }
...

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

Каир
источник
3

Во-первых, ключом было знание, где находится каталог данных. /usr/local/var/mysql Здесь был хотя бы один файл с расширением .err, которому предшествовало имя моей локальной машины. В нем была вся информация, необходимая для диагностики.

Я думаю, что я облажался, установив MySQL 8 в первую очередь. Мое приложение не совместимо с ним, поэтому мне пришлось вернуться к 5.7

Мое решение, которое работало для меня, собиралось в /usr/local/etc/my.cnf

Найдите эту строку, если она там. Я думаю, что это связано с MySQL 8:

mysqlx-bind-address = 127.0.0.1 

Удалите его, потому что в MySQL 5.7 говорит, что это не нравится в журнале ошибок

Также добавьте эту строку туда, если ее нет под bind-адресом.

socket=/tmp/mysql.sock

Перейдите в /tmpкаталог и удалите все файлы mysql.sock. При запуске сервера он воссоздает файлы носков

Удалите каталог данных с MySQL в остановленном состоянии. Мой был /usr/local/var/mysql . Это то же самое место, где находятся журналы

Оттуда я побежал

>mysqld --initialize

Тогда все заработало ... эта команда выдаст вам случайный пароль в конце. Сохраните этот пароль для следующего шага

Запуск этого, чтобы назначить свой собственный пароль.

>mysql_secure_installation 

Обе

>brew services stop mysql@5.7

и

>mysql.server start

сейчас работаем. Надеюсь это поможет. Это около 3 часов проб и ошибок.

Адриан
источник
3

Сначала введите это:

brew services start mysql

Тогда это -:

mysql -uroot
Рудра шах
источник
0

Я потратил много времени на то, чтобы сделать это. Я хочу разместить свое приложение django на своем сервере, и когда я запустился, python manage.py migrateя встретил эти вопросы.

И!! Я установил это, ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock Это сработало, наконец!

LittleCabbage
источник
0

Введите в терминале следующее:

mysql.server start
Фрэнк Ченг
источник
0

Остановка и запуск сервера mysql из терминала разрешили мою проблему. Ниже приведены команды для остановки и запуска сервера MySQL в MacO.

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

Примечание. Перезапуск служб с компьютера Mac не помог решить проблему на моем компьютере Mac. Так что попробуйте перезагрузить с терминала.

Лакшми Нараянан
источник
0

Если вы работаете в MacOS, просто сначала проверьте, перейдите в «Системные настройки» и посмотрите, работает MySQL или нет.

Мика Лотемо
источник
-1

Для CentOS файл для инициализации mysql находится здесь:

/etc/init.d/mysqld start
etusm
источник