Ошибка PID при запуске mysql.server?

Я только что попытался установить MySQL с помощью homebrew (в Mac OS X 10.6), но я столкнулся с проблемой при первом препятствии. При попытке вручную запустить сервер (запуск mysql.server) я получаю следующую ошибку:

. ERROR! Manager of pid-file quit without updating file.

К сожалению, я не уверен, какие журналы ошибок или файлы конфигурации проверяются, поскольку я никогда раньше не устанавливал MySQL таким образом.

Ответ 1

Я столкнулся с этой проблемой при установке через доморощенный. Убедитесь, что вы выполняете эти команды (которые перечислены во время установки, но их легко пропустить):

unset TMPDIR
mysql_install_db

Ответ 2

вам, вероятно, необходимо убедиться, что вы используете mysql в качестве пользователя root, иначе он не будет иметь права на запись файла PID (таким образом, вы получите ошибку).

Попробуйте следующее:

sudo mysql.server start

вам будет предложено ввести пароль. (это предполагает, что ваша учетная запись пользователя имеет разрешения на "sudo" - что она должна, если только она не будет установлена ​​как ограниченная учетная запись пользователя в OS X).

Это может быть не единственная проблема, но в любом случае она должна привести вас к следующему шагу.

Удачи!

Ответ 3

Я столкнулся с той же проблемой при попытке установить 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

Ответ 4

Эти две команды должны решить вашу проблему.

> unset TMPDIR
> mysql_install_db --verbose --user=\`whoami\` --basedir="$(brew
--prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp

Ответ 5

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

Это происходит, когда я что-то устанавливаю (например, elasticsearch или веб-сервер Puma). Разрешения MySql снова возвращаются (обратно ко мне, а не _mysql). Не знаю, почему.

  • MacOS Sierra
  • Homebrew 1.0.5-43-g41b2df8 (2016-10-02)
  • MySQL 5.7.15

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

Тогда он будет работать.

Ответ 6

По какой-то причине я не могу комментировать ниже Immendes выше, но в 10.8.2 с mySQL 5.6.10, помимо проверки db_install и добавления my.cnf, мне также пришлось chown -R myusername/tmp/mysql.sock.

Похоже, что разрешение mySQL для запуска под пользователем (как это было указано в корневом каталоге или www, как я это делаю в Linux) не является лучшей идеей в этом отношении (хотя Homebrew мог обновить формулу - вне моего масштаба и времени).

Ответ 7

Ничто другое не помогло, но работало следующее:

$ 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