Nunca use
sudo
com o comando brew
. Isso arruinará a propriedade dos arquivos relacionados. Executando brew
como root não é suportado. (Estou falando de brew
, não mysqld
) Citação do documento Homebrew
Avisos do código-fonte 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
}
Soluções
-
Desative o serviço e remova o 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
-
Corrigir a propriedade de arquivos relacionados ao 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
-
Reative o serviço MySQL.
# DO NOT USE "sudo brew" brew services start mysql
Atualizar :
Parece que alguns de vocês não estão familiarizados com o Homebrew. Vou explicar como o Homebrew gerencia os serviços aqui.
mysqld
escuta na porta 3306
por padrão, que não é uma porta privilegiada. Portanto, não há necessidade de iniciar o mysqld
com raiz. systemd
inicia mysqld
com root no Linux, mas o macOS não é Linux. Homebrew gerencia serviços com a ajuda de
launchd
, que é uma espécie de systemd
alternativa no macOS. launchd
inicia um processo em primeiro plano e o gerencia para você, assim como systemd
faz. brew services start/stop mysql
será suficiente para sua necessidade. Ele cria um arquivo launchd ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
, inicia o mysqld
com ele (executado pelo usuário atual). /usr/local/mysql/support-files/mysql.server
é um script de shell trazido pelo MySQL para ajudá-lo a iniciar o mysqld
. Não é recomendado usá-lo diretamente a menos que você constrói o MySQL da fonte fora Homebrew. Se você estiver usando o Homebrew, fique com os brew services
. Ou diga de outra forma, se você estiver usando o Homebrew, você deve fazer as coisas no modo Homebrew.