Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Homebrew MySQL 8.0.18 auf macOS 10.15 Catalina läuft nicht als Dienst

Verwenden Sie niemals sudo mit dem Befehl brew . Es wird das Eigentum an verwandten Dateien ruinieren. Ausführen von brew als root wird nicht unterstützt. (Ich spreche von brew , nicht mysqld )

Zitat aus dem Homebrew-Dokument

Warnungen aus dem Quellcode von 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
}

Lösungen

  1. Deaktivieren Sie den Dienst und entfernen Sie den 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. Korrigieren Sie den Besitz von Homebrew-bezogenen Dateien

    # 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. Aktivieren Sie den MySQL-Dienst erneut.

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

Aktualisieren :

Einige von Ihnen scheinen mit Homebrew nicht vertraut zu sein. Ich werde hier erklären, wie Homebrew Dienste verwaltet.

mysqld lauscht auf Port 3306 standardmäßig, was kein privilegierter Port ist. Es ist also nicht nötig, mysqld zu starten mit Wurzel. systemd startet mysqld mit root unter Linux, aber macOS ist nicht Linux.

Homebrew verwaltet Dienste mit Hilfe von launchd , was eine Art systemd ist Alternative unter macOS. launchd startet einen Vordergrundprozess und verwaltet ihn für Sie, genau wie systemd tut.

brew services start/stop mysql wird Ihre Notwendigkeit genügen. Es erstellt eine launchd-Datei ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist , startet mysqld damit (wird vom aktuellen Benutzer ausgeführt).

/usr/local/mysql/support-files/mysql.server ist ein von MySQL bereitgestelltes Shell-Skript, das Ihnen beim Starten von mysqld hilft . Die direkte Verwendung wird nicht empfohlen, es sei denn Sie erstellen MySQL aus Quellen außerhalb Hausgemacht. Wenn Sie Homebrew verwenden, bleiben Sie einfach bei brew services . Oder anders gesagt, wenn Sie Homebrew verwenden, sollten Sie die Dinge auf die Homebrew-Art tun.