ฉันจะปิดการใช้งาน MySQL ตั้งแต่เริ่มบูทได้อย่างไร


10

ฉันมี MBA ที่ใช้ OSX 10.9 กลางปี ​​2556

mysqldกระบวนการที่เริ่มต้นในทุกเริ่มต้นขึ้นเป็น ฉันเชื่อว่ามาจาก MySQL เวอร์ชันเก่าที่ฉันติดตั้ง (ผ่านAMPPS ) ฉันติดตั้ง MAMP Pro และฉันมักจะมีข้อขัดแย้งระหว่างสองกระบวนการนี้ ทุกครั้งที่ฉันปิดและรีสตาร์ท Mac ฉันต้องค้นหากระบวนการmysqldที่กำลังทำงาน (บนการตรวจสอบกิจกรรม) ออกจากนั้นเริ่ม MAMP (ผ่านคำสั่งเทอร์มินัล: /Application/MAMP/bin/startMysql.shจะไม่ทำงานจากที่อื่น)

ดังนั้นฉันสงสัยว่าฉันจะปิดใช้งานสิ่งนี้ไม่ให้mysqldทำงานในการเริ่มต้นทุกครั้ง


คุณสามารถรันpsเพื่อติดตามกระบวนการพาเรนต์และดูว่ากำลังเริ่มต้นmysqldอะไร
bmike

มาดูกันว่าใครมีข้อมูลที่ตรงเป้าหมายมากกว่านี้ไหม กระบวนการติดตามและฆ่าพวกเขาจากเทอร์มินัลไม่ใช่วิธีที่ง่ายที่สุดในการเขียน คุณสามารถรับข้อมูลเดียวกันจากการตรวจสอบกิจกรรม - เลือก mysql - จากนั้นข้อมูลจากนั้นค้นหากระบวนการหลัก
bmike

1
คำตอบที่เป็นประโยชน์ที่เป็นไปได้จาก Superuser: superuser.com/a/334622
Mikey TK

ไม่แน่ใจว่าสิ่งนี้สามารถช่วยได้หรือไม่เพราะเป็นแอปพลิเคชั่นที่เปิดตัวเมื่อเริ่มต้นอย่างไรก็ตามมีการดูการตั้งค่าระบบ >> ผู้ใช้และกลุ่ม >> องค์ประกอบการเข้าสู่ระบบ คุณจะพบแอพที่เปิดตัวเมื่อเริ่มต้น
FeliceM

คุณแน่ใจหรือไม่ว่าเป็น AMPPS และไม่ใช่เพียงแค่ MAMP ที่ทำงานเมื่อเริ่มต้น รีสตาร์ทคอมพิวเตอร์และป้อน 'ps -Awww | grep mysql 'ใน terminal อย่างน้อยก็ควรจะบอกให้คุณทราบว่าไฟล์ปฏิบัติการใดกำลังทำงานอยู่
MJ Walsh

คำตอบ:


10

เปิดเทอร์มินัลจากนั้น:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

โดยที่ "xxx.xxx" รวมอยู่ในผลลัพธ์ของคำสั่งแรกตัวอย่างเช่น "org.macports.mysql" รหัสผ่านสำหรับคำสั่ง "sudo" เป็นรหัสผ่านของบัญชีผู้ใช้ของคุณเอง

จริง, sudo ไม่ต้องการ "list" แต่เนื่องจากคุณได้ให้รหัสผ่าน sudo สำหรับคำสั่งแรกมันจะถูกเก็บไว้ในหน่วยความจำของเซสชั่นสั้น ๆ และไม่จำเป็นสำหรับคำสั่งที่สอง (ซึ่งมีสิทธิ์) มิฉะนั้นเพียงข้าม sudo ในคำสั่งแรกและใช้มันในวินาที มีหลายวิธีในการถนอมผิวแมว


2
sudo launchctl list | grep -i mysqlไม่มีผลลัพธ์ sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
Zaki Aziz

คุณสามารถใช้ AMPPS Admin Panel เพื่อปิดใช้งาน AMPPS MySQL daemon หรือดีกว่าเพียงถอนการติดตั้ง AMPPS พร้อมกันเนื่องจากคุณมีเฟรมเวิร์กอื่นติดตั้งอยู่ในตอนนี้
user64759

ฉันถอนการติดตั้ง AMPPS แล้วและฉันยังคงมีปัญหานี้อยู่
Zaki Aziz

3

หากเวอร์ชันของ MySQL ที่เคยติดตั้งมาจากหน้า MySQL Community Downloads บนไซต์ SUN / Oracle อาจเป็นไปได้ว่าlaunchdไม่เกี่ยวข้องกับการเริ่มต้นmysqldกระบวนการ ด้วยเหตุผลบางอย่างสคริปต์เริ่มต้นที่แจกจ่ายกับ MySQL จะใช้เทคโนโลยี"รายการเริ่มต้น" ที่เลิกใช้แล้วเพื่อเริ่มกระบวนการตอนบู๊ต ในความเป็นจริงแม้แต่การแจกแจงแบบไบนารีปัจจุบัน (5.6.15) ของการmysqldใช้ StartupItems เพื่อเริ่มต้นเซิร์ฟเวอร์บน OS X (?!)

สคริปต์เริ่มต้นที่การเปิดตัวรุ่นที่ขัดแย้งกันของ MySQL /Library/StartupItems/MYSQLCOM/MYSQLCOMน่าจะอยู่ที่ ณ เวลาบูตรายการเริ่มต้นนั้นจะตรวจสอบไฟล์ที่/etc/hostconfigเพื่อพิจารณาว่าการตั้งค่าสำหรับตัวแปร "MYSQLCOM" ถูกตั้งค่าเป็น "-YES-" หากเป็นเช่นนั้นสคริปต์เริ่มต้นจะเริ่มmysqldทำงาน

มันเป็นไปได้ที่จะปิดการใช้งานการเริ่มต้นของ MySQL โดยการแก้ไขบรรทัด/etc/hostconfigที่ระบุว่าMYSQLCOM=-YES-จะพูดMYSQLCOM=-NO-(ซึ่งควรปิดการใช้งานกระบวนการเริ่มต้นในการบูตครั้งต่อไป)

คุณสามารถยุติอินสแตนซ์ที่กำลังทำงานอยู่mysqldโดยการทำคำสั่ง

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop

การปิดใช้งานการเริ่มต้นของถาวรผิด mysqldขั้นตอนที่ควรจะเป็นไปได้ที่จะหยุดแรกภูตใช้คำสั่งดังกล่าวข้างต้นแล้วจะเอา MySQL เริ่มต้นรายการโดยใช้คำสั่งต่อไปนี้:

sudo rm -rf /Library/StartupItems/MYSQLCOM

หมายเหตุ: คุณอาจติดตั้ง MySQL Preference Pane ไว้ที่/Library/PreferencePanes/MySQL.prefpaneหรือ~/Library/PreferencePanes/MySQL.prefpane... บานหน้าต่างการตั้งค่านั้นยังสามารถลบออกเป็น 'ล้างข้อมูล' ของการติดตั้ง MySQL แบบเก่าได้


น่าเสียดายที่ฉันไม่มีอะไรในไฟล์ / etc / hostconfig ที่เชื่อมโยงกับ MySQL: i.imgur.com/3C2jxPZ.png
Zaki Aziz

และsudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stopไม่ทำอะไรเลย: i.imgur.com/ukHtW5x.png
Zaki Aziz

3

ต่อไปนี้ทำงานให้ฉันด้วย mysql 8.0.12ติดตั้งโดยใช้ Homebrew ในmacOS Mojave 10.14.1:

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

มันทำงานได้พบกับ homeql ติดตั้ง mysql ขอบคุณ
Almas Dusal

1

อาจเปลี่ยนชื่อ mysqld ได้ง่ายขึ้น (หรือย้าย / สำรอง / ลบ) จากนั้นเริ่มต้นใหม่และค้นหาข้อความแสดงข้อผิดพลาดสำหรับรายการเรียกใช้ที่พยายามเริ่มโปรแกรมที่ไม่สามารถใช้งานได้อีกต่อไป

คำตอบอื่น ๆ ดูเหมือนจะครอบคลุมถึงการมองหา Launch Agents และ Launch Daemons รวมถึงการติดตาม PID ซึ่งโดยทั่วไปจะใช้ไม่ได้กับ daemons เนื่องจากพวกเขามักจะมี PID หลักเป็น 1

นอกจากนี้เนื่องจาก mysql ไม่ได้จัดส่งกับ Mavericks คุณควรจะสามารถติดตามแพ็คเกจการติดตั้งที่คุณเลือกหรือใช้mdfind mysqldเพื่อค้นหาแพ็คเกจที่นำฐานข้อมูลนั้นไปยัง Mac ของคุณแล้วค้นหาคำแนะนำในการถอนการติดตั้ง / ปิดการใช้งานสำหรับแพ็คเกจของ mysql คุณจะต้องดูในการตั้งค่าระบบในกรณีที่คุณติดตั้งตัวควบคุมที่นั่นเพื่อเริ่มซอฟต์แวร์


mdfind mysqldไม่แสดงไฟล์ MySQL ที่เกี่ยวข้องกับ AMPPS เพียงไฟล์ที่เกี่ยวข้องกับ MAMP (และอีกไม่กี่โปรแกรมจาก MySQL ทั้งที่ฉันติดตั้งเช่น MySQL Workbench)
Zaki Aziz

1

เริ่มต้นด้วยการค้นหาว่ากระบวนการหลักคืออะไรที่เริ่มต้น mysql ของคุณ จาก Terminal รันpsคำสั่งเพื่อค้นหาว่ากระบวนการคืออะไร; คุณสามารถใช้-jหรือ-lไปออกรายการ ppidid ของผู้ปกครอง ดังนั้นสิ่งนี้จะแสดง:

$ ps -axjc | grep mysql

คอลัมน์แรกคือรหัสผู้ใช้ของคุณที่สองคือรหัสกระบวนการที่สามคือรหัสผู้ปกครอง

หาก id หลักคือ 1 จะมีการเปิดตัวโดย root launch daemon ซึ่งอาจหมายความว่ามาจากหนึ่งใน LaunchDaemons หรือ StartupItems หากมาจากกระบวนการที่ไม่ใช่ 1 แต่เป็นกระบวนการ launchd นั่นอาจเป็น LaunchAgents หรืออยู่ในรายการเข้าสู่ระบบของคุณ

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

ดังนั้นกระบวนการ 1 จะถูกเรียกใช้โดยการเริ่มต้นระบบและทุกสิ่งที่มีกระบวนการหลักของ 1 มาจากระบบ daemons สิ่งใด (ในกรณีนี้) ที่มีกระบวนการพาเรนต์ 257 กำลังเปิดใช้จาก LaunchAgents หรือ LoginItems อย่างใดอย่างหนึ่ง

โปรดจำไว้ว่าชื่อของ launch daemon หรือไอเท็มเริ่มต้นไม่จำเป็นต้องมีชื่อ 'mysql' อยู่ในชื่อ - มันอาจถูกเรียกใช้โดยโปรแกรมหรือรายการล็อกอินอื่น (ดังนั้นเพียงค้นหาด้วยชื่ออาจไม่พบมัน) . เมื่อคุณพบสิ่งที่เปิดตัวแล้วคุณอาจจะสามารถทราบได้ว่ามันมาจากที่ใด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.