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.