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.