Homebrew MySQL 8.0.18 на macOS 10.15 Catalina не будет работать как служба
Еще одно обновление macOS + еще одно обновление MySQL = еще один набор проблем.
Кажется, мне не удается заставить MySQL 8.0.18 работать в качестве домашней службы на macOS 10.15 Catalina. Пожалуйста, покажите мне ошибку моего пути.
Вот что я сделал:
- варить установить mysql
- заваривать булавку mysql
- коснитесь /tmp/mysql.sock
- запуск mysql.server
- сбросить TMPDIR
- mysql_secure_installation
- остановка mysql.server
- 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 не поддерживается.
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
}
Решения
Отключите службу и удалите 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
Исправить право собственности на файлы в
/usr/local/
sudo chown -R "$(whoami):admin" /usr/local/* # it will take some time
Повторно включите службу MySQL.
# DO NOT USE "sudo brew" brew services start mysql
Наконец, прочтите вслух следующие слова: Я никогда не буду использовать
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/
Готово! Успешно!