MySQL 5.5 на Lion не работает - PullRequest
       1

MySQL 5.5 на Lion не работает

6 голосов
/ 31 января 2012

Я установил MySQL 5.5 через образ диска в Mac OS X 10.7. Я также добавил /usr/local/mysql/bin к моему пути в .bash_profile.

which mysql возврат /usr/local/mysql/bin/mysql

Однако я не могу запустить сервер, что бы я ни пытался.

mysql -u root возвращает:

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

sudo /usr/local/mysql/bin/mysqld_safe запускается, а затем немедленно останавливает демона:

120130 23:18:57 mysqld_safe Logging to '/usr/local/mysql/data/Bryans-Macbook-Pro.local.err'.
120130 23:18:57 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120130 23:18:59 mysqld_safe mysqld from pid file /usr/local/mysql/data/Bryans-Macbook-Pro.local.pid ended

Я чувствую, что перепробовал все возможные решения, и сейчас у меня нет идей. Я даже попытался установить более старую версию MySQL (5.1) и получил те же результаты и усилия.

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

Запуск mysqld Результат:

$ mysqld
120209  0:02:23 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql-5.5.20-osx10.6-x86_64/data/ is case insensitive
120209  0:02:23 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
120209  0:02:23 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
120209  0:02:23 InnoDB: The InnoDB memory heap is disabled
120209  0:02:23 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120209  0:02:23 InnoDB: Compressed tables use zlib 1.2.3
120209  0:02:23 InnoDB: Initializing buffer pool, size = 128.0M
120209  0:02:23 InnoDB: Completed initialization of buffer pool
120209  0:02:23 InnoDB: highest supported file format is Barracuda.
120209  0:02:23 InnoDB: 1.1.8 started; log sequence number 1595675
120209  0:02:23 [ERROR] mysqld: unknown option '--skip-locking'
120209  0:02:23 [ERROR] Aborting

120209  0:02:23  InnoDB: Starting shutdown...
120209  0:02:24  InnoDB: Shutdown completed; log sequence number 1595675
120209  0:02:24 [Note] mysqld: Shutdown complete

UPDATE

Что ж, я полностью удалил mysql из своей системы, переустановил старую версию (5.1), и она фактически запускается сейчас. Тем не менее, я все еще не могу запустить rails server. Я получаю следующую ошибку:

/Users/bricker/.rvm/gems/ruby-1.8.7-p352/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle: dlopen(/Users/bricker/.rvm/gems/ruby-1.8.7-p352/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle, 9): Library not loaded: /opt/local/lib/mysql5/mysql/libmysqlclient_r.16.dylib (LoadError)

Итак, я запустил эту команду:

sudo install_name_tool -change libmysqlclient_r.16.dylib /opt/local/lib/mysql5/mysql/libmysqlclient_r.16.dylib ~/.rvm/gems/ruby-1.8.7-p352/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle

Но все равно появляется сообщение об ошибке при попытке запустить сервер rails.

ОБНОВЛЕНИЕ 2

Ладно, окончательное обновление: после всего, много раз переустанавливая mysql, видя все эти ошибки - получается, что, возможно, исходной проблемой был конфликт между гемами mysql2-0.2.7 и mysql2-0.3.11. Чтобы в конечном итоге решить проблему:

  1. Удалены все связанные с MySQL файлы из моей системы (см. Скрипт bash ниже)

  2. Установленный MySQL 5.1.61 (64-разрядный) из образа диска, представленного на веб-сайте MySQL

  3. Выполнены следующие строки:

sudo install_name_tool -change libmysqlclient_r.16.dylib /opt/local/lib/mysql5/mysql/libmysqlclient_r.16.dylib ~/.rvm/gems/ruby-1.8.7-p352/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.8.7-p352/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle

  1. запустил gem uninstall mysql2 и выбрал версию 0.3.11 - единственная версия, оставшаяся в этом разделе RVM - mysql2-0.2.7.

Теперь все, кажется, работает! Еще раз спасибо за помощь.

Bash-скрипт для удаления связанных с MySQL файлов из Mac OS X (10.6 и 10.7).

#!/bin/bash
sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
sudo rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*
echo "Done."

Скопируйте в remove-mysql.sh, сделайте его исполняемым (chmod +x remove-mysql.sh) и запустите его.

Ответы [ 6 ]

4 голосов
/ 09 февраля 2012
  1. Выполнить mysql_upgrade
  2. Удалить параметр skip-locking из my.cnf: MySQL - что делает скип-блокировка в my.cnf?

Если вы не можете найти skip-locking в вашем my.cnf, это означает, что MySQL загружает его по пути, отличному от ваших ожиданий.Дважды проверьте это.

PS Кажется, вы обновили MySQL со старой версии, не так ли?

3 голосов
/ 09 февраля 2012

В одной из строк в журнале ошибок это привлекло мое внимание

120209  0:02:23 [ERROR] mysqld: unknown option '--skip-locking'

Я думаю --skip-locking довольно старый вариант .

Возможно, вы захотите заменить это в my.cnf на skip-external-lock вместо

Поскольку вы удалили --skip-locking, найдите datadir в my.cnf и убедитесь, что вы указываете те переменные, в которых находятся данные mysql.

2 голосов
/ 04 февраля 2012

Звучит (для меня), как будто у вас есть проблема с разрешениями.

Проверьте регистрацию в следующих каталогах:

/ USR / местные / MySQL / бен
/ USR / местные / MySQL / данные
/ USR / местные / MySQL / включить
/ USR / местные / MySQL / Библиотека
/ USR / местные / MySQL / скрипты
/ USR / местные / MySQL / доля
...
/ USR / местные / MySQL / *

Все они должны быть доступны для чтения / записи / исполнения для пользователя mysql и группы mysql

Подробнее об установке макета: http://dev.mysql.com/doc/refman/5.5/en/macosx-installation-pkg.html#mysql-installation-layout-macosx

mysql_safe script: я думаю, что он может переключить пользователя на mysql "user". Подробнее об этом: http://dev.mysql.com/doc/refman/5.5/en/mysqld-safe.html

1 голос
/ 09 февраля 2012

Убедитесь, что ваш каталог данных доступен для чтения / записи с помощью mysql.

Попробуйте запустить mysqld_safe --skip-locking &

Это должно запустить сервер в фоновом режиме.Затем войдите с помощью «mysql» .. он не должен запрашивать никаких учетных данных.

Проверьте, есть ли у вас какие-либо пользователи, определенные в таблице user в базе данных mysql.

You возможно придется вручную добавить пользователя (поскольку система грантов обойдена выше), используя:

use mysql
insert into users <standard insert record stuff here>

Когда закончите, выйдите из клиента mysql и выполните killall -s1 mysqld .. вы можетенужно сделать killall -s 15 mysqld, чтобы фоновая работа закончилась чисто.Пожалуйста, не делайте -9 на плохом старом процессе.

Можно также использовать задания / убийства %% и т. Д.

0 голосов
/ 29 мая 2012

Просто запустите mysql_install_db из каталога /usr/local. Для получения дополнительной информации см. это сообщение в блоге .

0 голосов
/ 03 февраля 2012

Попробуйте сначала

sudo /Library/StartupItems/MySQLCOM/MySQLCOM start

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

...