Non usare mai sudo
con il comando brew
. Rovinerà la proprietà dei file correlati. Esecuzione di brew
poiché root non è supportato. (Sto parlando di brew
, non mysqld
)
Avvisi dal codice sorgente di 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
}
Soluzioni
-
Disabilita il servizio e rimuovi il demone di avvio.
# 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
-
Correggi la proprietà dei file relativi all'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
-
Riattiva il servizio MySQL.
# DO NOT USE "sudo brew" brew services start mysql
Aggiorna :
Sembra che alcuni di voi non abbiano familiarità con Homebrew. Ti spiego come Homebrew gestisce i servizi qui.
mysqld
è in ascolto sulla porta 3306
per impostazione predefinita, che non è una porta privilegiata. Quindi non è necessario avviare mysqld
con radice. systemd
avvia mysqld
con root su Linux, ma macOS non è Linux.
Homebrew gestisce i servizi con l'aiuto di launchd
, che è una specie di systemd
alternativa su macOS. launchd
avvia un processo in primo piano e lo gestisce per te, proprio come systemd
fa.
brew services start/stop mysql
sarà sufficiente per il tuo bisogno. Crea un file launchd ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
, avvia mysqld
con esso (gestito dall'utente corrente).
/usr/local/mysql/support-files/mysql.server
è uno script di shell portato da MySQL per aiutarti ad avviare mysqld
. Non è consigliabile utilizzarlo direttamente a meno che costruisci MySQL dal sorgente esterno Birra fatta in casa. Se stai usando Homebrew, rimani con brew services
. Oppure dillo in un altro modo, se stai usando Homebrew, dovresti fare le cose in modo Homebrew.