sql >> Base de Datos >  >> RDS >> Mysql

Homebrew MySQL 8.0.18 en macOS 10.15 Catalina no se ejecutará como servicio

Nunca uses sudo con el comando brew . Arruinará la propiedad de los archivos relacionados. Ejecutando brew como raíz no es compatible. (Estoy hablando de brew , no mysqld )

Cita del documento Homebrew

Advertencias del código fuente de 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
}

Soluciones

  1. Deshabilite el servicio y elimine el 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
    
  2. Arreglar la propiedad de archivos relacionados con 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. Vuelva a habilitar el servicio MySQL.

    # DO NOT USE "sudo brew"
    brew services start mysql
    

Actualizar :

Parece que algunos de ustedes no están familiarizados con Homebrew. Explicaré cómo Homebrew gestiona los servicios aquí.

mysqld escucha en el puerto 3306 por defecto, que no es un puerto privilegiado. Entonces no hay necesidad de iniciar mysqld con raíz systemd inicia mysqld con root en Linux, pero macOS no es Linux.

Homebrew gestiona servicios con la ayuda de launchd , que es una especie de systemd alternativa en macOS. launchd inicia un proceso en primer plano y lo administra por usted, al igual que systemd lo hace.

brew services start/stop mysql será suficiente para su necesidad. Crea un archivo launchd ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist , inicia mysqld con él (ejecutado por el usuario actual).

/usr/local/mysql/support-files/mysql.server es un script de shell traído por MySQL para ayudarlo a iniciar mysqld . No se recomienda usarlo directamente a menos que construyes MySQL desde una fuente externa Cerveza casera. Si está utilizando Homebrew, solo quédese con brew services . O dilo de otra manera, si estás usando Homebrew, deberías hacer las cosas a la manera de Homebrew.