Jangan pernah menggunakan sudo dengan perintah brew . Ini akan merusak kepemilikan file terkait. Menjalankan brew sebagai root tidak didukung. (Saya sedang berbicara tentang brew , bukan mysqld )
Peringatan dari kode sumber 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
}
Solusi
-
Nonaktifkan layanan dan hapus 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 -
Perbaiki kepemilikan file terkait 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 -
Aktifkan kembali layanan MySQL.
# DO NOT USE "sudo brew" brew services start mysql
Perbarui :
Sepertinya beberapa dari Anda tidak akrab dengan Homebrew. Saya akan menjelaskan bagaimana Homebrew mengelola layanan di sini.
mysqld mendengarkan di port 3306 secara default, yang bukan merupakan port istimewa. Jadi tidak perlu memulai mysqld dengan akar. systemd memulai mysqld dengan root di Linux, tetapi macOS bukan Linux.
Homebrew mengelola layanan dengan bantuan launchd , yang merupakan jenis systemd alternatif di macOS. launchd memulai proses latar depan dan mengelolanya untuk Anda, seperti systemd tidak.
brew services start/stop mysql akan mencukupi kebutuhan Anda. Itu membuat file launchd ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist , memulai mysqld dengan itu (dijalankan oleh pengguna saat ini).
/usr/local/mysql/support-files/mysql.server adalah skrip shell yang dibawa oleh MySQL untuk membantu Anda memulai mysqld . Menggunakannya secara langsung tidak disarankan kecuali Anda membangun MySQL dari sumber luar buatan sendiri. Jika Anda menggunakan Homebrew, cukup gunakan brew services . Atau ucapkan dengan cara lain, jika Anda menggunakan Homebrew, Anda harus melakukan sesuatu dengan cara Homebrew.