Bagaimana saya bisa menonaktifkan MySQL dari mulai saat boot?

10

Saya memiliki pertengahan 2013 MBA yang menjalankan OSX 10.9.

Proses yang dimulai pada setiap start up adalah mysqld. Saya percaya itu dari versi lama MySQL yang saya instal (melalui AMPPS ). Saya kemudian menginstal MAMP Pro dan saya sering mengalami konflik antara kedua proses ini. Setiap kali saya mematikan dan me-restart mac saya, saya harus menemukan proses mysqldyang sedang berjalan (pada monitor aktivitas), berhenti, dan kemudian mulai MAMP (melalui perintah terminal: /Application/MAMP/bin/startMysql.shtidak akan bekerja dari tempat lain).

Jadi saya bertanya-tanya bagaimana saya bisa menonaktifkan ini mysqldagar tidak berjalan di setiap startup.

Zaki Aziz
sumber
Apakah Anda dapat berlari psuntuk melacak proses induk dan melihat apa yang mulai mysqld?
bmike
Mari kita lihat apakah seseorang memiliki lebih banyak informasi yang ditargetkan. Melacak proses dan membunuh mereka dari terminal bukanlah yang termudah untuk ditulis. Anda bisa mendapatkan informasi yang sama dari Activity Monitor - pilih mysql - lalu info, lalu cari proses induknya.
bmike
1
Kemungkinan jawaban yang membantu dari Superuser: superuser.com/a/334622
Mikey TK
Tidak yakin apakah ini dapat membantu karena ini untuk aplikasi yang diluncurkan pada awal, Namun lihat Preferensi Sistem >> Pengguna dan Grup >> Elemen masuk. Anda akan menemukan aplikasi yang diluncurkan saat startup.
FeliceM
Apakah Anda yakin itu AMPPS dan bukan hanya MAMP yang berjalan saat startup. Nyalakan kembali komputer dan masukkan 'ps -Awww | grep mysql 'di terminal. Setidaknya ini akan memberi tahu Anda yang dapat dieksekusi berjalan.
MJ Walsh

Jawaban:

10

Buka terminal, lalu:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

Di mana "xxx.xxx" termasuk dalam output dari perintah pertama, misalnya "org.macports.mysql". Kata sandi untuk perintah "sudo" adalah kata sandi akun pengguna Anda sendiri.

Benar, sudo tidak diperlukan untuk "daftar" tetapi karena Anda sudah memberikan kata sandi sudo untuk perintah pertama, sudo disimpan untuk sementara waktu dalam memori sesi dan tidak diperlukan untuk perintah kedua (yang diistimewakan). Jika tidak, lewati saja sudo pada perintah pertama dan gunakan pada perintah kedua. Ada banyak cara selain menguliti kucing.

pengguna64759
sumber
2
sudo launchctl list | grep -i mysqltidak menghasilkan apa-apa. Tidak juga sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
Zaki Aziz
Anda bisa menggunakan Panel Admin AMPPS untuk menonaktifkan daemon AMPPS MySQL. Atau lebih baik lagi, cukup uninstall sama sekali AMPPS karena Anda memiliki kerangka kerja lain yang diinstal sekarang.
user64759
Saya telah menghapus instalasi AMPPS dan saya masih memiliki masalah ini.
Zaki Aziz
3

Jika versi MySQL yang sebelumnya diinstal berasal dari halaman Unduhan Komunitas MySQL di situs SUN / Oracle, kemungkinan itu launchdtidak terlibat dengan memulai mysqldproses. Untuk beberapa alasan, skrip startup yang didistribusikan dengan MySQL menggunakan teknologi "Startup items" yang sudah tidak digunakan lagi untuk memulai proses saat boot. Bahkan, bahkan distribusi biner saat ini (5.6.15) mysqldmenggunakan StartupItems untuk memulai server pada OS X (?!)

Skrip startup yang meluncurkan versi MySQL yang bertentangan kemungkinan besar terletak di /Library/StartupItems/MYSQLCOM/MYSQLCOM. Pada saat boot, item startup itu akan memeriksa file di /etc/hostconfiguntuk menentukan apakah pengaturan untuk variabel "MYSQLCOM" diatur ke "-YES-". Jika demikian, skrip startup akan diluncurkan mysqld.

Seharusnya dimungkinkan untuk menonaktifkan startup MySQL dengan memodifikasi baris /etc/hostconfigyang menentukan MYSQLCOM=-YES-untuk mengatakan MYSQLCOM=-NO-(yang harus menonaktifkan proses startup pada boot berikutnya).

Anda dapat menghentikan instance yang sedang berjalan mysqlddengan melakukan perintah:

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop

Untuk secara permanen menonaktifkan startup dari proses yang salah mysqld , harus dimungkinkan untuk menghentikan daemon menggunakan perintah di atas, dan kemudian untuk menghapus item startup MySQL menggunakan perintah berikut:

sudo rm -rf /Library/StartupItems/MYSQLCOM

Catatan: Anda mungkin juga menginstal Panel Preferensi MySQL di /Library/PreferencePanes/MySQL.prefpaneatau ~/Library/PreferencePanes/MySQL.prefpane... Panel preferensi itu juga dapat dihapus ke bagian 'pembersihan' dari instalasi MySQL yang lama.

Eddie Kelley
sumber
Sayangnya saya tidak memiliki apa pun di file / etc / hostconfig yang terkait dengan MySQL: i.imgur.com/3C2jxPZ.png
Zaki Aziz
Dan sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stoptidak menghasilkan apa pun juga: i.imgur.com/ukHtW5x.png
Zaki Aziz
3

Berikut ini berfungsi untuk saya dengan mysql 8.0.12diinstal menggunakan Homebrew di macOS Mojave 10.14.1:

rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Vikram Hosakote
sumber
Itu berhasil untuk bertemu pada homebrew menginstal mysql. Terima kasih.
Almas Dusal
1

Mungkin lebih mudah untuk mengubah nama mysqld (atau memindahkan / mencadangkan / menghapusnya) dan kemudian memulai kembali dan mencari pesan kesalahan untuk item peluncuran yang mencoba memulai program yang tidak lagi tersedia.

Jawaban lain tampaknya mencakup taktik mencari Agen Peluncuran dan Peluncuran Daemon serta melacak PID yang umumnya tidak bekerja untuk daemon karena mereka biasanya memiliki PID induk 1.

Juga, karena mysql tidak dikirimkan bersama Mavericks, Anda harus dapat melacak paket instal yang Anda pilih atau gunakan mdfind mysqlduntuk menemukan paket yang membawa database itu ke Mac Anda dan kemudian menemukan instruksi uninstall / disable untuk paket mysql itu. Anda juga ingin melihat preferensi sistem jika Anda telah menginstal kontrol di sana untuk memulai perangkat lunak.

bmike
sumber
mdfind mysqldtidak menampilkan file MySQL terkait AMPPS, hanya file terkait MAMP (dan beberapa lainnya dari kedua program MySQL yang telah saya instal seperti MySQL Workbench)
Zaki Aziz
1

Mulailah dengan mencari tahu apa proses induk yang memulai mysql Anda. Dari Terminal jalankan psperintah untuk mencari tahu apa prosesnya; Anda dapat menggunakan -jatau -luntuk mencantumkan id induk ppid. Jadi ini akan menunjukkan kepada Anda:

$ ps -axjc | grep mysql

Kolom pertama adalah userid Anda, yang kedua adalah id proses, yang ketiga adalah id induk.

Jika id induk adalah 1 maka itu akan diluncurkan oleh daemon peluncuran root, yang mungkin berarti itu berasal dari salah satu LaunchDaemons atau StartupItems. Jika itu berasal dari proses yang bukan 1 tetapi itu adalah proses launchd maka itu mungkin LaunchAgents atau ada di item masuk sistem Anda.

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

Jadi proses 1 diluncurkan oleh startup sistem, dan apa pun dengan proses induk 1 berasal dari daemon sistem. Apa pun (dalam hal ini) dengan proses induk 257 sedang diluncurkan dari salah satu LaunchAgents atau LoginItems.

Ingatlah bahwa nama daemon peluncuran atau item startup tidak harus memiliki 'mysql' dalam judul - itu bisa dijalankan oleh program atau item login yang berbeda (jadi mencarinya dengan nama mungkin tidak menemukannya) . Setelah Anda menemukan apa yang telah diluncurkan, Anda mungkin dapat mengetahui dari mana asalnya.

AlBlue
sumber