Не удается подключиться к MySQL на Mac - отсутствует файл mysql.sock - PullRequest
8 голосов
/ 26 апреля 2011

Я установил MySQL на свою Mac OS 10.6 около недели назад, и после некоторой тренировки все заработало.Он интегрирован с Python MySQLdb, и я также получил Sequel Pro для подключения к базе данных.Тем не менее, php не будет обращаться к серверу.Даже после того, как я добавил файл php.ini в / etc / и направил его на тот же носок, который использовал Sequel Pro: /tmp/mysql.sock.

Но теперь я вообще не могу получить доступ к локальному серверу.Насколько я могу судить, нигде на моем компьютере нет файла mysql.sock, ни в / tmp /, ни где-либо еще.

Я могу запустить сервер mysql из Терминала, но он автоматически выходит из системы после того, какминута:

110425 17:36:18 mysqld_safe Logging to '/usr/local/mysql/data/dn0a208bf7.sunet.err'.
110425 17:36:18 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
110425 17:37:58 mysqld_safe mysqld from pid file /usr/local/mysql/data/dn0a208bf7.sunet.pid ended

Если я попытаюсь вызвать «mysql» из командной строки (которая сегодня прекрасно работала):

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

Ошибка PHP, конечно, похожа:

PHP Warning:  mysql_real_escape_string(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock)

Кроме того, в моем каталоге установки mysql нет файла "my.cnf": / usr / local / mysql.Есть файлы my.cnf для установок mysql, которые поставляются вместе с XAMPP.У них также есть сокет по умолчанию, который указан как «/tmp/mysql.sock», но мне пришлось изменить их вручную.

Есть идеи, что происходит?Почему изменение файла php.ini привело к изменению и для Sequel Pro?

Ответы [ 6 ]

20 голосов
/ 26 апреля 2011

Прежде всего, я предлагаю вам использовать homebrew для установки на ваш Mac любых сторонних библиотек или инструментов.Посмотрите: http://mxcl.github.com/homebrew/

В противном случае, вы можете найти, где находится сокет mysql на вашем Mac, а затем добавить ссылку на /tmp.

. В вашем терминале попробуйте что-то вроде:

locate mysql | grep sock

Вы получите что-то вроде:

/the/path/to/mysql.sock

Затем выполните:

ln -s /the/path/to/mysql.sock /tmp/mysql.sock

Это должно работать.

Также вы можете редактироватьВаш файл php.ini, чтобы установить правильный путь для сокета mysql.

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

5 голосов
/ 02 октября 2014

Я получил похожую ошибку и оказался здесь.Я использую OSX 10.9.5.Это решило мои проблемы (надеюсь, это кому-нибудь поможет).

1) sudo mkdir / var / mysql

2) sudo ln -s /private/tmp/mysql.sock / var / mysql /mysql.sock

Больше информации: http://glidingphenomena.blogspot.com.br/2010/03/fixing-warning-mysqlconnect-cant.html

Спасибо!

4 голосов
/ 19 января 2012

Хорошо, я просто провел пару часов, борясь с этой же проблемой. Я установил файл dmg для MySql 5.5.20 (64 бита) для osx 10.6 на свой iMac с OSX 10.7.2 - и /tmp/mysql.sock отсутствует!

Ответом оказалось просто установить MySQLStartupItem.pkg, который поставляется с файлом dmg, и перезапустить систему. Это запускает демоны при запуске (что, я надеялся, будет необязательным).

Волшебно, появился мой файл /tmp/mysql.sock и все хорошо!

3 голосов
/ 19 января 2015

Я также получал эту ошибку при новой установке XAMPP.

Для тех, кто не знаком с командной строкой, есть другой способ.

Основываясь на приведенном выше совете (спасибо), я использовал мой старый стандартный метод "Easy Find", чтобы найти последнюю версию my.cnf. Открыв файл в редакторе, я обнаружил, что файл сокета указывает на:

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

Я обновил Расширенные свойства Navicat / Использовал файл сокета, указав путь выше и бинго.

Надеюсь, это кому-нибудь поможет.

2 голосов
/ 05 августа 2011

Я собираюсь добавить сюда свои два цента, потому что у меня тоже была эта проблема, но мои обстоятельства ненормальны для большинства. В моей системе была установлена ​​смесь Zend Server CE и XAMPP. Я использую Mac OS X. И я решил удалить Zend из моей системы, потому что это было болью в моей заднице.

После удаления Zend, поскольку оба использовали одну и ту же БД, и Zend получил ее, моя система сошла с ума. Удаление и переустановка XAMPP не помогли. После пары часов (с которыми я буквально справился) устранения неполадок я обнаружил, что мне нужно найти в моей системе все копии my.cnf. Причина в том, что mysql все еще пытался найти путь Zend mysql, и он не удался.

Так что я использовал locate, чтобы найти его. Мне пришлось инициировать поиск (так как я никогда не использовал его раньше), чтобы он мог создавать БД файлов в моей системе. Затем я запустил «locate my.cnf» и нашел его в «/ private / etc». Поэтому я просто переименовал файл в my.cnf.old и попытался снова запустить MySQL. Бам! Это работает сейчас.

Я скажу это, мне нужно было, чтобы коллега помог мне, потому что я просто крутил свои колеса на этом. Я действительно надеюсь, что это поможет кому-то там. Спасибо!

0 голосов
/ 23 июня 2015

Нашли решение:
У меня была та же самая проблема, и я сделал много поисков, но не мог решить проблему, пока я не посмотрел на мой конфигурационный файл MySql. В моем конфигурационном файле сокет был в строке 21 и путь был
«/Applications/AMPPS/var/mysql.sock"

В приложении Ampps перейдите на вкладку MySql, а затем нажмите кнопку конфигурации.

Вы также можете найти файл конфигурации в папке "/ Applications / AMPPS / mysql / etc"

Так просто я добавил
'unix_socket' => '/Applications/AMPPS/var/mysql.sock',
в мой файл database.php в массиве MySQL, и он работает для меня.
После строки хоста. Я проверил с localhost и 127.0.0.1, и оба работали
Надеюсь, это работает и для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...