Mysql
 sql >> Database >  >> RDS >> Mysql

Homebrew MySQL 8.0.18 su macOS 10.15 Catalina non verrà eseguito come servizio

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 )

Citazione da Homebrew doc

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

  1. 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
    
  2. 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
    
  3. 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.