Làm thế nào tôi có thể vô hiệu hóa MySQL bắt đầu khi khởi động?


10

Tôi có MBA giữa năm 2013 chạy OSX 10.9.

Quá trình bắt đầu trên mỗi lần khởi động là mysqld. Tôi tin rằng đó là từ một phiên bản cũ của MySQL mà tôi đã cài đặt (thông qua AMPPS ). Sau đó tôi đã cài đặt MAMP Pro và tôi thường có xung đột giữa hai quy trình này. Mỗi khi tôi tắt và khởi động lại máy mac của mình, tôi phải tìm quá trình mysqldđang chạy (trên màn hình hoạt động), thoát nó và sau đó khởi động MAMP (thông qua lệnh terminal: /Application/MAMP/bin/startMysql.shsẽ không hoạt động từ bất kỳ nơi nào khác).

Vì vậy, tôi tự hỏi làm thế nào tôi có thể vô hiệu hóa điều này mysqldkhỏi chạy trên mỗi lần khởi động.


Bạn có thể chạy psđể theo dõi quá trình cha mẹ và xem những gì đang bắt đầu mysqld?
bmike

Hãy xem ai đó có nhiều thông tin mục tiêu hơn. Theo dõi các quá trình và tiêu diệt chúng từ thiết bị đầu cuối không phải là cách dễ nhất để viết lên. Bạn có thể nhận được thông tin tương tự từ Activity Monitor - chọn mysql - sau đó là thông tin, sau đó tìm quy trình cha.
bmike

1
Câu trả lời hữu ích có thể có từ Superuser: superuser.com/a/334622
Mikey TK

Không chắc chắn nếu điều này có thể giúp ích vì nó dành cho các ứng dụng được khởi chạy khi bắt đầu, tuy nhiên hãy xem Tùy chọn hệ thống >> Người dùng và Nhóm >> Thành phần đăng nhập. Bạn sẽ tìm thấy ứng dụng được khởi chạy khi khởi động.
FeliceM

Bạn có chắc chắn đó là AMPPS và không chỉ MAMP chạy khi khởi động. Khởi động lại máy tính và nhập 'ps -Awww | grep mysql 'trong thiết bị đầu cuối. Điều này ít nhất sẽ cho bạn biết thực thi nào đang chạy.
MJ Walsh

Câu trả lời:


10

Mở terminal, sau đó:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

Trong đó "xxx.xxx" được bao gồm trong đầu ra của lệnh đầu tiên, ví dụ "org.macports.mysql". Mật khẩu cho lệnh "sudo" là mật khẩu của tài khoản người dùng của bạn.

Đúng, sudo không cần phải "liệt kê" nhưng vì bạn đã cung cấp mật khẩu sudo cho lệnh đầu tiên, nên nó được lưu trữ trong một thời gian ngắn trong bộ nhớ phiên và không bắt buộc đối với lệnh thứ hai (đặc quyền). Nếu không, chỉ cần bỏ qua sudo trên lệnh đầu tiên và sử dụng nó vào lệnh thứ hai. Có nhiều cách hơn một để da mèo.


2
sudo launchctl list | grep -i mysqlkhông mang lại kết quả. Cả sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
Zaki Aziz

Bạn có thể sử dụng Bảng quản trị AMPPS để vô hiệu hóa trình nền AMPPS MySQL. Hoặc tốt hơn nữa, chỉ cần gỡ cài đặt AMPPS hoàn toàn vì bạn đã cài đặt một khung công tác khác.
dùng64759

Tôi đã gỡ cài đặt AMPPS và tôi vẫn gặp sự cố này.
Zaki Aziz

3

Nếu phiên bản MySQL được cài đặt trước đó có nguồn gốc từ trang Tải xuống Cộng đồng MySQL trên trang web SUN / Oracle, thì có khả năng đó launchdkhông liên quan đến việc khởi động mysqldquy trình. Vì một số lý do, tập lệnh khởi động được phân phối với MySQL sử dụng công nghệ "Các mục khởi động" không dùng nữa để bắt đầu các quy trình khi khởi động. Trên thực tế, ngay cả bản phân phối nhị phân hiện tại (5.6.15) mysqldsử dụng StartupItems để khởi động máy chủ trên OS X (?!)

Kịch bản khởi động khởi chạy phiên bản xung đột của MySQL rất có thể nằm ở /Library/StartupItems/MYSQLCOM/MYSQLCOM. Khi khởi động, mục khởi động đó sẽ kiểm tra tệp tại /etc/hostconfigđể xác định xem cài đặt cho biến "MYSQLCOM" có được đặt thành "-YES-" không. Nếu vậy, kịch bản khởi động sẽ khởi chạy mysqld.

Có thể vô hiệu hóa khởi động MySQL bằng cách sửa đổi dòng trong /etc/hostconfigđó chỉ định MYSQLCOM=-YES-để nói MYSQLCOM=-NO-(sẽ vô hiệu hóa quá trình khởi động trong lần khởi động tiếp theo).

Bạn có thể chấm dứt phiên bản hiện đang chạy mysqldbằng cách thực hiện lệnh:

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop

Để vô hiệu hóa vĩnh viễn quá trình khởi động sai mysqld quy trình, trước tiên, có thể dừng trình nền bằng cách sử dụng lệnh ở trên và sau đó xóa mục khởi động MySQL bằng lệnh sau:

sudo rm -rf /Library/StartupItems/MYSQLCOM

Lưu ý: bạn cũng có thể cài đặt Ngăn tùy chọn MySQL tại /Library/PreferencePanes/MySQL.prefpanehoặc ~/Library/PreferencePanes/MySQL.prefpane... Ngăn tùy chọn đó cũng có thể được gỡ bỏ để 'dọn dẹp' các phần cài đặt MySQL cũ.


Thật không may, tôi không có bất cứ thứ gì trong tệp / etc / hostconfig liên kết với MySQL: i.imgur.com/3C2jxPZ.png
Zaki Aziz

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stopkhông mang lại kết quả gì: i.imgur.com/ukHtW5x.png
Zaki Aziz

3

Phần sau đây hoạt động với tôi với mysql 8.0.12được cài đặt bằng Homebrew trong macOS Mojave 10.14.1:

rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Nó hoạt động để đáp ứng trên mysql cài đặt homebrew. cảm ơn.
Almas Dusal

1

Có thể dễ dàng hơn để đổi tên mysqld (hoặc di chuyển / sao lưu / xóa nó) và sau đó khởi động lại và tìm thông báo lỗi cho mục khởi chạy đang cố gắng khởi động chương trình không còn khả dụng.

Các câu trả lời khác dường như đề cập đến việc tìm kiếm các Đại lý khởi động và Khởi động Daemon cũng như truy tìm ra PID thường không hoạt động đối với daemon vì chúng thường có chỉ số PID là 1.

Ngoài ra, vì mysql không được vận chuyển với Mavericks, nên bạn có thể theo dõi gói cài đặt bạn đã chọn hoặc sử dụng mdfind mysqldđể định vị gói đã mang cơ sở dữ liệu đó đến máy Mac của bạn và sau đó tìm hướng dẫn gỡ cài đặt / vô hiệu hóa cho gói mysql đó. Bạn cũng sẽ muốn xem xét các tùy chọn hệ thống trong trường hợp bạn đã cài đặt một điều khiển ở đó để khởi động phần mềm.


mdfind mysqldkhông hiển thị bất kỳ tệp MySQL nào liên quan đến AMPPS, chỉ các tệp liên quan đến MAMP (và một số khác từ các chương trình MySQL mà tôi đã cài đặt như MySQL Workbench)
Zaki Aziz

1

Bắt đầu bằng cách tìm hiểu quá trình cha mẹ là gì đã bắt đầu mysql của bạn. Từ Terminal chạy một pslệnh để tìm hiểu quá trình là gì; bạn có thể sử dụng -jhoặc -lliệt kê id gốc ppid. Vì vậy, điều này sẽ cho bạn thấy:

$ ps -axjc | grep mysql

Cột đầu tiên là userid của bạn, cột thứ hai là id quá trình, cột thứ ba là id cha.

Nếu id gốc là 1 thì nó sẽ được khởi chạy bởi trình nền khởi chạy gốc, điều đó có thể có nghĩa là nó đến từ một trong LaunchDaemons hoặc StartupItems. Nếu nó xuất phát từ một quá trình không phải là 1 nhưng đó là một quá trình khởi chạy thì đó có thể là LaunchAgents hoặc có trong các mục đăng nhập hệ thống của bạn.

root                1     0     1      0    0 Ss     ??    4:49.10 launchd
alblue            257     1   257      0    0 Ss     ??    0:16.29 launchd
_spotlight        415     1   415      0    0 Ss     ??    0:00.94 launchd

Vì vậy, quy trình 1 được khởi chạy khi khởi động hệ thống và bất cứ điều gì với quy trình cha mẹ 1 đều xuất phát từ trình nền hệ thống. Bất cứ điều gì (trong trường hợp này) với quy trình mẹ là 257 sẽ được khởi chạy từ một trong các LaunchAgents hoặc LoginItems.

Hãy nhớ rằng tên của trình nền khởi chạy hoặc mục khởi động không nhất thiết phải có 'mysql' trong tiêu đề - nó có thể được chạy bởi một chương trình hoặc mục đăng nhập khác (vì vậy chỉ cần tìm kiếm theo tên có thể không tìm thấy nó) . Khi bạn đã tìm thấy những gì đã khởi chạy nó, bạn có thể tìm ra nó đến từ đâu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.