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