Ответ 1
Я столкнулся с этой проблемой при установке через доморощенный. Убедитесь, что вы выполняете эти команды (которые перечислены во время установки, но их легко пропустить):
unset TMPDIR
mysql_install_db
Я только что попытался установить MySQL с помощью homebrew (в Mac OS X 10.6), но я столкнулся с проблемой при первом препятствии. При попытке вручную запустить сервер (запуск mysql.server) я получаю следующую ошибку:
. ERROR! Manager of pid-file quit without updating file.
К сожалению, я не уверен, какие журналы ошибок или файлы конфигурации проверяются, поскольку я никогда раньше не устанавливал MySQL таким образом.
Я столкнулся с этой проблемой при установке через доморощенный. Убедитесь, что вы выполняете эти команды (которые перечислены во время установки, но их легко пропустить):
unset TMPDIR
mysql_install_db
вам, вероятно, необходимо убедиться, что вы используете mysql в качестве пользователя root
, иначе он не будет иметь права на запись файла PID (таким образом, вы получите ошибку).
Попробуйте следующее:
sudo mysql.server start
вам будет предложено ввести пароль. (это предполагает, что ваша учетная запись пользователя имеет разрешения на "sudo" - что она должна, если только она не будет установлена как ограниченная учетная запись пользователя в OS X).
Это может быть не единственная проблема, но в любом случае она должна привести вас к следующему шагу.
Удачи!
Я столкнулся с той же проблемой при попытке установить MySQL 5.5.15 в Lion с использованием homebrew и решил проблему:
mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
и создав файл ~/my.cnf
с содержимым:
[mysqld]
basedir=/usr/local/Cellar/mysql/5.5.15
datadir=/usr/local/var/mysql
basedir - должно быть ваше текущее место установки MySQL datadir - должно быть местоположение данных MySQL
Вы можете определить это местоположение, наблюдая команду make во время "brew install mysql", ища что-то вроде этого:
-DCMAKE_INSTALL_PREFIX=/usr/local/Cellar/mysql/5.5.15 -DMYSQL_DATADIR=/usr/local/var/mysql -DINSTALL_MANDIR=/usr/local/Cellar/mysql
Где DCMAKE_INSTALL_PREFIX = basedir и DMYSQL_DATADIR = datadir
Эти две команды должны решить вашу проблему.
> unset TMPDIR
> mysql_install_db --verbose --user=\`whoami\` --basedir="$(brew
--prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
Я добавляю это здесь, потому что я столкнулся с этой проблемой несколько раз после установки другого программного обеспечения. MySQL работал отлично в течение нескольких дней, а затем вдруг я получил эту ошибку.
Это происходит, когда я что-то устанавливаю (например, elasticsearch или веб-сервер Puma). Разрешения MySql снова возвращаются (обратно ко мне, а не _mysql
). Не знаю, почему.
Итак, я обнаружил, что одной из причин этого является разрешение на местоположение, где MySQL хранит ваши базы данных, которые по умолчанию здесь:
/usr/local/var/mysql
Если вы посмотрите в эту папку, вы увидите файл
<your computer name>.err
Если вы заглянете внутрь этого файла (more
it или cat
it), вы, вероятно, увидите эту ошибку:
[ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
Если это так, вы знаете, что это проблема с разрешениями.
Если вам все равно, вы можете просто запустить MySQL, просто запустив mysqld
(и оставьте этот терминал открытым).
Если вам все равно:
ls -al /usr/local/var/mysql
вы заметите, что разрешения, вероятно, все установлены для вас (ваша учетная запись пользователя). Это означает, что mysql не может монтировать ваши базы данных при запуске с помощью ярлыка homebrew sudo mysql.server start
[даже если вы используете sudo для запуска в режиме "admin" ].
Итак, измените разрешения:
$ sudo chown -R _mysql /usr/local/var/mysql
$ sudo chmod -R o+rwx /usr/local/var/mysql
Тогда он будет работать.
По какой-то причине я не могу комментировать ниже Immendes выше, но в 10.8.2 с mySQL 5.6.10, помимо проверки db_install и добавления my.cnf, мне также пришлось chown -R myusername/tmp/mysql.sock.
Похоже, что разрешение mySQL для запуска под пользователем (как это было указано в корневом каталоге или www, как я это делаю в Linux) не является лучшей идеей в этом отношении (хотя Homebrew мог обновить формулу - вне моего масштаба и времени).
Ничто другое не помогло, но работало следующее:
$ ps aux | grep mysql
tagir 27260 0.0 1.0 3562356 175120 ?? S 2:52PM 0:00.42 mysqld --skip-grant-tables
tagir 42704 0.0 0.0 2434840 784 s000 S+ 3:04PM 0:00.00 grep mysql
$ kill 27260
# Careful! This might erase your existing data
$ rm -rf /usr/local/var/mysql
$ mysqld --initialize
$ mysql.server start