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