Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Homebrew MySQL 8.0.18 no macOS 10.15 Catalina não será executado como serviço


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


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

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

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