Brug aldrig sudo
med kommandoen brew
. Det vil ødelægge ejerskabet af relaterede filer. Kører brew
da root ikke understøttes. (Jeg taler om brew
, ikke mysqld
)
Advarsler fra kildekoden til <381> brygge
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
}
Løsninger
-
Deaktiver tjenesten og fjern 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
-
Ret ejerskab af homebrew-relaterede filer
# 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
-
Genaktiver MySQL-tjenesten.
# DO NOT USE "sudo brew" brew services start mysql
Opdater :
Det lader til, at nogle af jer ikke er bekendt med Homebrew. Jeg vil forklare, hvordan Homebrew administrerer tjenester her.
mysqld
lytter ved port 3306
som standard, hvilket ikke er en privilegeret port. Så der er ingen grund til at starte mysqld
med rod. systemd
starter mysqld
med root på Linux, men macOS er ikke Linux.
Homebrew administrerer tjenester ved hjælp af launchd
, som er en slags systemd
alternativ på macOS. lanceret
starter en forgrundsproces og administrerer den for dig, ligesom hvad systemd
gør.
brygtjenester start/stop mysql
vil være tilstrækkeligt til dit behov. Det opretter en lanceret fil ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
, starter mysqld
med den (køres af nuværende bruger).
/usr/local/mysql/support-files/mysql.server
er et shell-script bragt af MySQL for at hjælpe dig med at starte mysqld
. Det anbefales ikke at bruge det direkte medmindre du bygger MySQL fra kilden udenfor Hjemmebryg. Hvis du bruger Homebrew, skal du bare holde dig til brygtjenester
. Eller sig det på en anden måde, hvis du bruger Homebrew, bør du gøre tingene på Homebrew-måden.