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 )
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
-
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 -
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 -
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.