Mysql
 sql >> Base de données >  >> RDS >> Mysql

Homebrew MySQL 8.0.18 sur macOS 10.15 Catalina ne fonctionnera pas en tant que service

N'utilisez jamais sudo avec la commande brew . Cela ruinera la propriété des fichiers associés. Exécution de brew en tant que root n'est pas pris en charge. (je parle de brew , pas mysqld )

Citation de Homebrew doc

Avertissements du code source 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
}

Solutions

  1. Désactivez le service et supprimez le 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. Correction de la propriété des fichiers liés à l'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. Réactivez le service MySQL.

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

Mettre à jour :

Il semble que certains d'entre vous ne connaissent pas Homebrew. Je vais vous expliquer comment Homebrew gère les services ici.

mysqld écoute au port 3306 par défaut, qui n'est pas un port privilégié. Il n'est donc pas nécessaire de démarrer mysqld avec racine. systemd lance mysqld avec root sur Linux, mais macOS n'est pas Linux.

Homebrew gère les services à l'aide de launchd , qui est une sorte de systemd alternative sur macOS. launchd démarre un processus de premier plan et le gère pour vous, tout comme systemd fait.

brew services start/stop mysql suffira à votre besoin. Il crée un fichier launchd ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist , lance mysqld avec lui (exécuté par l'utilisateur actuel).

/usr/local/mysql/support-files/mysql.server est un script shell apporté par MySQL pour vous aider à démarrer mysqld . L'utiliser directement n'est pas recommandé à moins que vous construisez MySQL à partir d'une source extérieure Brassage maison. Si vous utilisez Homebrew, restez fidèle aux brew services . Ou dites-le d'une autre manière, si vous utilisez Homebrew, vous devriez faire les choses à la manière Homebrew.