Nikdy nepoužívejte sudo pomocí příkazu brew . Zničí vlastnictví souvisejících souborů. Spuštění brew protože root není podporován. (Mluvím o brew , nikoli mysqld )
Upozornění od zdrojový kód 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
}
Řešení
-
Zakažte službu a odeberte 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 -
Opravit vlastnictví souborů souvisejících s 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 -
Znovu povolte službu MySQL.
# DO NOT USE "sudo brew" brew services start mysql
Aktualizovat :
Zdá se, že někteří z vás neznají homebrew. Zde vysvětlím, jak Homebrew spravuje služby.
mysqld naslouchá na portu 3306 ve výchozím nastavení, což není privilegovaný port. Není tedy třeba spouštět mysqld s kořenem. systemd spustí mysqld s rootem na Linuxu, ale macOS není Linux.
Homebrew spravuje služby pomocí launchd , což je druh systemd alternativa na macOS. launchd spustí proces na popředí a spravuje ho za vás, stejně jako systemd ano.
brew services start/stop mysql bude stačit vaší potřebě. Vytvoří spuštěný soubor ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist , spustí mysqld s ním (spuštěno aktuálním uživatelem).
/usr/local/mysql/support-files/mysql.server je skript shellu, který přináší MySQL, aby vám pomohl spustit mysqld . Přímé použití se nedoporučuje pokud sestavujete MySQL ze zdroje mimo Homebrew. Pokud používáte Homebrew, zůstaňte u brew services . Nebo to řekněte jinak, pokud používáte Homebrew, měli byste dělat věci Homebrew způsobem.