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.