Проблема при запуске mysql на компьютере разработки OSX 10.6: «ОШИБКА 2002 (HY000): не удается подключиться к локальному серверу MySQL через сокет« /tmp/mysql.sock '(2) » - PullRequest
4 голосов
/ 28 января 2011

Я установил MySQL на свой персональный компьютер / компьютер для разработки, используя пакет .dmg, в соответствии с инструкциями здесь: http://dev.mysql.com/doc/refman/5.5/en/macosx-installation-pkg.html, включая установку элемента автозагрузки и панели настроек. И все же я не могу использовать MySQL вообще.

работает:

/Library/StartupItems/MySQLCOM/MySQLCOM start

или

/Library/StartupItems/MySQLCOM/MySQLCOM restart

«кажется» работает - в этом он выдает мне сообщение типа «Запуск сервера базы данных MySQL» - но после этого я все равно не могу зайти в mysql из командной строки или подключиться к нему в Приложение Rails 2.3.8 работает в скрипте / на сервере. Я получаю сообщение об ошибке в названии вопроса.

Кроме того, панель настроек MySQL тоже не работает. Если я нажимаю кнопку «Запустить MySQL Server», меня просят ввести пароль, но затем ничего не происходит - на панели продолжает отображаться, что сервер остановлен.

(Я полагаю, что ранее у меня была установлена ​​версия MySQL для MacPorts, и также возможно, что когда-то в прошлом была одна, собранная из исходного кода - но я вполне уверен, что удалил их и удалил все файлы, связанные с ним, которые я смог найти.)

Я также пытаюсь mysqld start в терминале. вот вывод:

110127 15:40:28 [Warning] Can't create test file /usr/local/mysql-5.5.8-osx10.6-x86_64/data/Lucky-Charm.lower-test
110127 15:40:28 [Warning] Can't create test file /usr/local/mysql-5.5.8-osx10.6-x86_64/data/Lucky-Charm.lower-test
110127 15:40:28 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
110127 15:40:28 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
InnoDB: The InnoDB memory heap is disabled
InnoDB: Mutexes and rw_locks use GCC atomic builtins
InnoDB: Compressed tables use zlib 1.2.3
110127 15:40:28  InnoDB: Initializing buffer pool, size = 128.0M
110127 15:40:28  InnoDB: Completed initialization of buffer pool
110127 15:40:28  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.

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


UPDATE:

ОК. Я придерживаюсь теории, что это проблема с разрешениями. Видя, что datadir принадлежит root, я выбрал -R для _mysql. В ответ Майк, вот что сейчас стоит:

$ ls -al /usr/local/mysql-5.5.8-osx10.6-x86_64
total 296
drwxr-xr-x  16 root    wheel     544 Dec  3 12:53 .
drwxrwxr-x  12 root    staff     408 Jan 27 14:38 ..
-rw-r--r--   1 root    wheel   17987 Dec  3 11:58 COPYING
-rw-r--r--   1 root    wheel   12388 Dec  3 11:58 INSTALL-BINARY
-rw-r--r--   1 root    wheel  113534 Dec  3 11:58 README
drwxr-xr-x  44 root    wheel    1496 Dec  3 12:53 bin
drwxr-xr-x   9 _mysql  wheel     306 Jan 27 16:46 data
drwxr-xr-x   4 root    wheel     136 Dec  3 12:53 docs
drwxr-xr-x  47 root    wheel    1598 Dec  3 12:53 include
drwxr-xr-x  12 root    wheel     408 Jan 27 14:38 lib
drwxr-xr-x   4 root    wheel     136 Dec  3 12:53 man
drwxr-xr-x  19 root    wheel     646 Jan 27 14:38 mysql-test
drwxr-xr-x   3 root    wheel     102 Dec  3 12:53 scripts
drwxr-xr-x  32 root    wheel    1088 Dec  3 12:53 share
drwxr-xr-x  28 root    wheel     952 Dec  3 12:53 sql-bench
drwxr-xr-x  16 root    wheel     544 Dec  3 12:53 support-files

Я пытался сделать mysqld start в Терминале, потому что это было единственное, что давало мне что-то, что казалось значимым выводом сообщения об ошибке (см. https://gist.github.com/799436), но мне сказали в #mysql, что это не предназначен для непосредственного запуска (и если я попытаюсь sudo mysqld start, я получу сообщение, раздражающее меня за попытку запустить mysql от имени root).

Кажется, у меня что-то сейчас работает: mysqld_safe & успешно запускает сервер MySQL. То, что до сих пор не работает, - это «обычный» метод запуска сервера (элемент запуска или панель настроек)

... кто-то в #mysql велел мне сказать, что, видимо, с MySQL все в порядке, это элемент запуска, который не работает.

Ответы [ 2 ]

9 голосов
/ 28 января 2011

Хорошо, было несколько вещей, в основном связанных с правами доступа / владельцем, которые пытались заставить MySQL работать с установленным двоичным кодом хорошо.

Возможно, вам нужно убедиться, что элемент автозагрузки принадлежит пользователю root:

sudo chown -R root:wheel /Library/StartupItems/MySQLCOM

Может быть, вам нужен /etc/my.cnf файл со следующим:

[mysqld]
socket=/tmp/mysql.sock
datadir=/usr/local/mysql/data

Возможно, вам потребуется заполнить эти переменные в /usr/local/mysql/support-files/mysql.server (строка будет там с пустыми значениями):

basedir=/usr/local/mysql 
datadir=/usr/local/mysql/data 

(см. не удается запустить MySql в Mac OS 10.6 Snow Leopard относительно вышеизложенного)

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

В любом случае, теперь панель настроек и элемент запуска действительно работают для меня.


Пройдя второй раз на другом компьютере, я внес некоторые правки и удалил ненужный фрагмент из того, что ответил вчера.

В целом вот что я предлагаю вам сделать, чтобы MySQL, установленный в двоичном коде, работал хорошо в OSX 10.6. Предупреждение, вы можете в конечном итоге удалить все базы данных, которые у вас уже были на первых двух шагах, но так как это предназначено для вашей машины разработки, это не должно быть большой проблемой. Сначала добавьте mysqldump, если нужно.

  1. Убедитесь, что у вас не запущен сервер mysql: ps aux | grep mysql покажет вам их процессы. Остановите его с помощью mysqladmin shutdown или, если это не сработает, потому что что-то не работает, sudo kill номера процессов.
  2. Удалите все ранее установленные версии mysql - проверьте port list installed, проверьте, установлена ​​ли домашняя версия, sudo find / -name mysql ищите скомпилированные из исходного кода и удалите все, что угодно. Вы даже можете удалить элемент автозагрузки, удалив каталог /Library/StartupItems/MySQLCOM, если хотите.
  3. Запустите установочный пакет mysql-what-version.pkg
  4. Проверьте это, набрав sudo mysqld_safe & в терминале. Если вы получили «команда не найдена», добавьте /usr/local/mysql/bin к вашему пути и попробуйте снова. Если вы получаете какие-либо страшные сообщения об ошибках, проверьте файл /etc/my.cnf, как описано выше, и повторите попытку. Если он по-прежнему не работает, , тогда , возможно, попробуйте рекурсивно преуменьшить и изменить каталог /usr/local/mysql/data, чтобы убедиться, что _mysql может писать в него. Как только вы увидите, что он запускается нормально, введите mysql на терминале. Если вы получаете командную строку MySQL, все в порядке (введите exit, чтобы выйти из нее) - фактически, если вы получаете что-то кроме слова «Не удается подключиться к локальному серверу MySQL через сокет», то вы Можно сделать вывод, что сервер MySQL работает - выключить или убить сервер и двигаться дальше.
  5. Далее мы установим элемент автозагрузки. Запустите MySQLStartupItem.pkg
  6. Проверьте пункт запуска в терминале, введя sudo /Library/StartupItems/MySQLCOM/MySQLCOM start. Он выдаст вам сообщение о том, что он запускает сервер, но в случае неудачи он не даст никаких указаний, поэтому попробуйте снова войти в mysql, чтобы проверить, работает ли сервер. Если это так, введите sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop, чтобы остановить сервер (и проверить, что элемент запуска может остановить сервер, а также запустить его: D) Если он не работает, попробуйте выполнить настройки, описанные выше в /usr/local/mysql/support-files/mysql.server. Если это все еще не делает, попробуйте немного вверху около sudo chown -R root:wheel /Library/StartupItems/MySQLCOM.
  7. Как только это сработает, запустите / установите MySQL.prefPane. Это должно дать вам пункт MySQL в ваших Системных настройках внизу, и если вы зайдете туда, вы увидите кнопку, которую вы можете нажать, чтобы остановить / запустить сервер MySQL. Попробуйте, и если это не сработает, я не уверен, что еще могу вам сказать.
0 голосов
/ 17 ноября 2011

Я столкнулся с той же ошибкой после удаления моих старых портов Mac и установки mysql в новый каталог портов Mac (новый / opt / local).

Я исправил это, установив правильные разрешения для mysqlкаталоги в дереве портов:

chown -R _mysql:_mysql /opt/local/var/db/mysql5
chown -R _mysql:_mysql /opt/local/var/run/mysql5/
chmod -R 755 /opt/local/var/run/mysql5

Я не уверен, был ли необходим chmod.Конечно, порты уже сделали работу по созданию пользователя и группы _mysql.

...