Không bao giờ sử dụng sudo
với lệnh brew
. Nó sẽ làm hỏng quyền sở hữu của các tệp liên quan. Đang chạy brew
vì root không được hỗ trợ. (Tôi đang nói về brew
, không phải mysqld
)
Trích dẫn từ tài liệu Homebrew
Cảnh báo từ mã nguồn của 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
}
Giải pháp
-
Tắt dịch vụ và xóa trình nền tảng khởi chạy.
# 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
-
Sửa quyền sở hữu các tệp liên quan đến 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
-
Kích hoạt lại dịch vụ MySQL.
# DO NOT USE "sudo brew" brew services start mysql
Cập nhật :
Có vẻ một số bạn chưa quen với Homebrew. Tôi sẽ giải thích cách Homebrew quản lý các dịch vụ tại đây.
mysqld
nghe tại cổng 3306
theo mặc định, đó không phải là một cổng đặc quyền. Vì vậy, không cần phải bắt đầu mysqld
với gốc. systemd
bắt đầu mysqld
với quyền root trên Linux, nhưng macOS không phải là Linux.
Homebrew quản lý các dịch vụ với sự trợ giúp của launchd
, là một loại systemd
thay thế trên macOS. launchd
bắt đầu một quy trình nền trước và quản lý nó cho bạn, giống như những gì systemd
không.
brew services start/stop mysql
sẽ đáp ứng đủ nhu cầu của bạn. Nó tạo ra một tệp launcd ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
, bắt đầu mysqld
với nó (do người dùng hiện tại điều hành).
/usr/local/mysql/support-files/mysql.server
là một tập lệnh shell do MySQL mang lại để giúp bạn khởi động mysqld
. Sử dụng nó trực tiếp không được khuyến khích trừ khi bạn xây dựng MySQL từ nguồn bên ngoài Tiếng quê hương. Nếu bạn đang sử dụng Homebrew, chỉ cần gắn bó với brew services
. Hay nói theo cách khác, nếu bạn đang sử dụng Homebrew, bạn nên thực hiện mọi việc theo cách Homebrew.