MacPorts and the PID file
I just upgraded from OS X Mavericks to Yosemite, and then went through the process of updating my MacPorts ports. Everything went cleanly until I tried to start MySQL. I received the message:
The server quit without updating PID
Searching for an answer gave plenty of articles suggesting that the file mentioned after that error message needed to be created, that permissions were wrong, and other things surrounding issues regarding the pid file. None of those turned out to be the cause.
In the directory that is being checked for the PID file, a file of the same name, but with the suffix .err had been created. That file revealed an even more confusing message:
mysqld: Table 'mysql.plugin' doesn't exist
I searched about this, as well, and found many more articles about things that didn't apply, such as needing to run some processes that are actually meant for a new implementation, which this was not. Even the error file, itself, suggested running mysql_update, which also wasn't the solution.
In my case, the problem turned out to be that even though I had the mysql port installed, my system had never used it. Instead, I must have installed MySQL before starting to use MacPorts. When both are present, and both have config files present, the native one will be selected first.
How to know? Simply type the following in a terminal window:
If the return is in /usr/local instead of /opt/local, where the port goes, you're probably using the native version. I started it via the MySQL tab in System Preferences, and all is well. I'll export my databases, remove the native my.cnf file and get the ports version running, import my databases, and all should be well.
It seems that forcing the use of the MacPorts implementation when the other is present is problematic. Trying to kill the msyqld process results in it starting again, immediately. Will post the answer once I find the solution.