Доморощенный MySQL 8.0.18 на macOS 10.15 Каталина не будет работать как сервис - PullRequest
3 голосов
/ 19 октября 2019

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

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

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

  1. brew install mysql
  2. brew pin mysql
  3. touch /tmp/mysql.sock
  4. запуск mysql.server
  5. unset TMPDIR
  6. mysql_secure_installation
  7. mysql.server stop
  8. sudo brew services start mysql

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

MySQL будет весело запускаться как служба homebrew в качестве пользователя 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

Ответы [ 4 ]

1 голос
/ 25 октября 2019

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

Это был случай 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
0 голосов
/ 20 октября 2019

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

Сначала необходимо найти каталог MySQL bin:

    which mysqld

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

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

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

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

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

0 голосов
/ 21 октября 2019

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

Цитата из Homebrew doc

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. Наконец, прочитайте вслух следующие слова: Iникогда не буду использовать sudo с brew снова.

0 голосов
/ 19 октября 2019

Я только что столкнулся с той же проблемой после обновления до Каталины. Если бы я запускал сервер 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-сервер из системных настроек, только из терминала.

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

...