Nigdy nie używaj sudo
poleceniem brew
. Zrujnuje to własność powiązanych plików. Uruchamiam brew
jako root nie jest obsługiwany. (Mówię o brew
, a nie mysqld
)
Ostrzeżenia z kodu źródłowego 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
}
Rozwiązania
-
Wyłącz usługę i usuń demona uruchamiania.
# 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
-
Napraw własność plików związanych z homebrew
# For x86 Mac sudo chown -R "$(whoami):admin" /usr/local/* # For M1 Mac sudo chown -R "$(whoami):admin" /opt/homebrew/* # it will take some time
-
Włącz ponownie usługę MySQL.
# DO NOT USE "sudo brew" brew services start mysql
Aktualizacja :
Wygląda na to, że niektórzy z was nie znają Homebrew. Wyjaśnię, jak Homebrew zarządza usługami tutaj.
mysqld
nasłuchuje na porcie 3306
domyślnie, który nie jest portem uprzywilejowanym. Więc nie ma potrzeby uruchamiania mysqld
z korzeniem. systemd
uruchamia mysqld
z rootem na Linuksie, ale macOS to nie Linuks.
Homebrew zarządza usługami za pomocą launchd
, który jest rodzajem systemd
alternatywa na macOS. launchd
uruchamia proces na pierwszym planie i zarządza nim za Ciebie, tak jak to, co systemd
tak.
brew services start/stop mysql
wystarczy. Tworzy uruchomiony plik ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
, uruchamia mysqld
z nim (uruchamiany przez bieżącego użytkownika).
/usr/local/mysql/support-files/mysql.server
to skrypt powłoki dostarczany przez MySQL, który pomaga uruchomić mysqld
. Używanie go bezpośrednio nie jest zalecane chyba że budujesz MySQL ze źródeł zewnętrznych Homebrew. Jeśli używasz Homebrew, po prostu trzymaj się brew services
. Lub powiedz to w inny sposób, jeśli używasz Homebrew, powinieneś robić rzeczy w sposób Homebrew.