When I run sudo kill -9 [PID] with the proper process ID, the process stops but then is restarted and has a new PID. I'm trying to kill the mysqld process.
How can I mimic the Activity Monitor in killing a process? In the Activity Monitor, when you press "Quit Process", the process permanently stops running, it is totally terminated. I figure that kill will do the same thing right?
I had both the Activity Monitor and the terminal next to each other to see if the command works, but every time I do sudo kill -9 [PID], the process in Activity monitor doesn't go away, it just refreshes with a new PID.
So... how do I kill the mysqld process via the terminal?
8 Answers
The process you are killing is probably being managed by launchd, the proper way to stop it and have it not restart is to use launchctl unload <path to plist>. The plist that controls that process is in either /Library/LaunchDaemons or /System/Library/LaunchDaemons. If it is a system process and not one of your own, then you will probably have to use sudo to get launchctl to work as desired.
A better way try and stop it might be;
${MYSQL_HOME}/bin/mysqladmin -u root -proot shutdown > /dev/null 2>&1 8 A couple of comments mention that "launchd is probably involved" - so I thought I'd put this out as an additional answer. As @jarrod-roberson says, you can check if launchd is involved by first running launchctl list | grep mysqld.
An important thing you learn here is whether MySQL was installed with Homebrew or not - Brew stores its launchctl files in a different location than where OSX puts the "regular" services.
On my OSX box, the plist files are in ~/Library/LaunchAgents/ So I ran:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plistto stop the MySQL server. I had previously looked in /Library/LaunchDaemons/ and /Library/LaunchAgents but didn't find a file with mysqld in its name.
You can also install a brew-based system called services, to manage all Brew-installed services applications, as described in this post - I haven't tried this myself, though, so YMMV.
I tried to kill the process by sending it the TERM signal, and that worked. The command was:
sudo kill -15 {PID} For me, this worked once I figured out which label I was looking for.
launchctl list | egrep {DESIRED_LABEL}
launchctl remove {DESIRED_LABEL} 1 Unload the service and stop the daemon:
sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysql.plistLoad the service and start the daemon:
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist 1 What process are you trying to kill? Some processes in Mac OS X (e.g., the Dock, some system processes) automatically respawn if they're killed.
2I solved editing the /Library/LaunchDaemons/com.mysql.mysql.plist file, changing the attribute true to false
<!--?xml version="1.0" encoding="UTF-8"?-->
<plist version="1.0"> <dict> <key>KeepAlive</key> <false /> <key>Label</key> <string>com.mysql.mysqld</string> <key>ProgramArguments</key> <array> <string>/usr/local/mysql/bin/mysqld_safe</string> <string>--user=mysql</string> </array> </dict>
</plist> There is a process running on your machine that is blocking mysql. Run
ps auxwww | grep mysql
then do
kill -15 {PID}
My process that was blocking it was _mysql