Не удается подключиться к локальному серверу 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. Может ли кто-нибудь помочь мне с этой проблемой?


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

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 документ здесь


кажется, это работает для меня и доказывает, что 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 часов проб и ошибок.



0

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

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



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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.