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.