Homebrew MySQL 8.0.18 на macOS 10.15 Catalina не будет работать как служба

Еще одно обновление macOS + еще одно обновление MySQL = еще один набор проблем.

Кажется, мне не удается заставить MySQL 8.0.18 работать в качестве домашней службы на macOS 10.15 Catalina. Пожалуйста, покажите мне ошибку моего пути.

Вот что я сделал:

  1. варить установить mysql
  2. заваривать булавку mysql
  3. коснитесь /tmp/mysql.sock
  4. запуск mysql.server
  5. сбросить TMPDIR
  6. mysql_secure_installation
  7. остановка mysql.server
  8. sudo brew services запускает mysql

Вот чего я ожидал:

MySQL, чтобы весело работать как доморощенный сервис от имени пользователя root.

Вот что произошло:

MySQL падает прямо и умирает, оставляя загадочный последний оператор в /usr/local/var/mysql/[host.domain.com].err:

"[ERROR] [MY-010123] [Server] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!"

Дополнительная информация:

MySQL отлично работает при последующих перезагрузках, если я запускаю его вручную:

sudo reboot now
ssh [servername.domain.com]
touch /tmp/mysql.sock
mysql.server start

Вот /usr/local/var/mysql/[servername.domain.com].err содержимое файла:

2019-10-20T18:02:14.6NZ mysqld_safe Logging to '/usr/local/var/mysql/moriarty.farces.com.err'.
2019-10-20T18:02:14.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
2019-10-20T18:02:14.670494Z 0 [System] [MY-010116] [Server] /usr/local/Cellar/mysql/8.0.18/bin/mysqld (mysqld 8.0.18) starting as process 557
2019-10-20T18:02:14.685511Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
2019-10-20T18:02:15.617696Z 0 [System] [MY-010229] [Server] Starting crash recovery...
2019-10-20T18:02:15.626461Z 0 [System] [MY-010232] [Server] Crash recovery finished.
2019-10-20T18:02:15.795626Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.
2019-10-20T18:02:15.833541Z 0 [System] [MY-010931] [Server] /usr/local/Cellar/mysql/8.0.18/bin/mysqld: ready for connections. Version: '8.0.18'  socket: '/tmp/mysql.sock'  port: 3306  Homebrew.
2019-10-20T18:02:15.993739Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Socket: '/tmp/mysqlx.sock' bind-address: '127.0.0.1' port: 33060

После перезагрузки, когда я пытаюсь запустить MySQL как службу Homebrew:

sudo reboot now
ssh [servername.domain.com]
sudo brew services start mysql

MySQL не работает со следующей ошибкой, записанной в /usr/local/var/mysql/[servername.domain.com].err файл:

2019-10-20T18:44:13.780394Z 0 [ERROR] [MY-010123] [Server] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
2019-10-20T18:44:13.780503Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-10-20T18:44:13.780727Z 0 [System] [MY-010910] [Server] /usr/local/opt/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.18)  Homebrew.
2019-10-20T18:44:13.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/moriarty.farces.com.pid ended

5 ответов

Никогда не использовать sudo с командой brew. Это разрушит право собственности на связанные файлы. Бегbrew как root не поддерживается.

Цитата из документа Homebrew

tl;dr Sudo опасен, и вы все равно установили TextMate.app без sudo.

Homebrew отказывается работать с sudo.

Предупреждения из исходного кодаbrew

check-run-command-as-root() {
  ...
  odie <<EOS
Running Homebrew as root is extremely dangerous and no longer supported.
As Homebrew does not drop privileges on installation you would be giving all
build scripts full access to your system.
EOS
}

Решения

  1. Отключите службу и удалите launchdaemon.

    # stop and unload the launchdaemon
    sudo launchctl unload -w /Library/LaunchDaemons/homebrew.mxcl.mysql.plist
    # remove the lauchdaemon file
    sudo rm -f /Library/LaunchDaemons/homebrew.mxcl.mysql.plist
    sudo rm -f /tmp/mysql.sock /tmp/mysqlx.sock
    
  2. Исправить право собственности на файлы в /usr/local/

    sudo chown -R "$(whoami):admin" /usr/local/*
    # it will take some time
    
  3. Повторно включите службу MySQL.

    # DO NOT USE "sudo brew"
    brew services start mysql
    
  4. Наконец, прочтите вслух следующие слова: Я никогда не буду использовать sudo с участием brew еще раз.

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

Вам нужно найти свой MySQL bin каталог сначала:

    which mysqld

Результат должен быть похож на /usr/local/mysql/bin/mysql.

В support-files каталог содержит необходимые сценарии, необходимые для запуска MySQL, и находится в том же каталоге, что и binкаталог находится. В приведенном выше примере каталог файлов поддержки будет/usr/local/mysql/support-files/.

Запустите службу MySQL с правами администратора следующим образом:

    sudo /usr/local/mysql/support-files/mysql.server start

NB: в случае, если результат выполнения первой команды отличается от приведенной выше, настройтеsupport-files каталог соответственно, как описано выше.

- О боже, - говорит он, качая головой...

Это был случай RTFM, а я нет. Вот соответствующая страница из Справочного руководства MySQL 8.0. А вот и волшебный джуджу:

добавлять user=root к [mysqld] раздел /usr/local/etc/my.cnf файл, например:

# Default Homebrew MySQL server config
[mysqld]
# Only allow connections from localhost
bind-address = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
user=root

Я столкнулся с той же проблемой после обновления до Catalina. Если бы я запустил сервер MySQL из системных настроек, он бы просто запустился и остановился. Решение для меня было:

sudo /usr / local/mysql-8.0.17-macos10.14-x86_64/support-files/mysql.server start

вместо: /usr / local/mysql/support-files/mysql.server start

Я столкнулся с множеством проблем с Каталиной. Теперь я не могу запускать / останавливать сервер mysql из системных настроек, только из терминала.

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

Решил вот так:

Полностью удалить MySQL Наблюдая: https://gist.github.com/vitorbritto/0555879fe4414d18569d

Установите MySQL с помощью Download do MySQL community server

https://dev.mysql.com/downloads/mysql/

Готово! Успешно!

Другие вопросы по тегам