Bug #82676 Launchd for Mac OS X needs better documentation
Submitted: 21 Aug 2016 18:30 Modified: 27 Sep 2016 18:04
Reporter: Rob Lewis (Candidate Quality Contributor) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Documentation Severity:S2 (Serious)
Version:5.7 OS:MacOS
Assigned to: CPU Architecture:Any
Tags: mac, MySQL

[21 Aug 2016 18:30] Rob Lewis
Description:
I can't find documentation of the relationship between the server startup parameters in the launchd .plist file and those in the my.cnf file(s). 

For example, do the .plist options override those in my.cnf, or vice versa? Does MySQL Server even look for a my.cnf file when started up this way? What are the considerations in editing the .plist? 

This entire area needs to be documented much better. 

How to repeat:
Look for comprehensive documentation of the Mac OS X startup daemon and .plist file. 

Suggested fix:
Provide thorough and complete documentation of these issues.
[21 Aug 2016 19:48] MySQL Verification Team
This isn't security issue.
[22 Aug 2016 8:15] MySQL Verification Team
Hello Rob,

Thank you for the feedback!
Some info here http://dev.mysql.com/doc/refman/5.7/en/osx-installation-launchd.html

Thanks,
Umesh
[22 Aug 2016 16:58] Rob Lewis
Yes, fortunately I had stumbled onto that page and, combined with my pre-existing knowledge of OS X, it was enough to get me past my immediate roadblock. But I think you'll agree it's far from complete, leaves many questions unanswered, and is probably not of much help to a beginning user.
[15 Sep 2016 2:28] Philip Olson
Hello and thanks for the suggestion!

The following was added, please let me know if this answers your questions and concerns, and/or if you desire additional information. Thanks!

-------
Additional launchd related information:

The plist entries
override my.cnf / my.ini entries, because they are passed in as command
line arguments. For additional information about passing in program
options, see http://dev.mysql.com/doc/refman/5.7/en/program-options.html

The ProgramArguments section defines the command line options that are passed
into the program, which is the mysqld binary in this case.

The default plist definition is written with less sophisticated use cases
in mind. For more complicated setups, you may want to remove some of the
arguments and instead rely on a MySQL configuration file, such as my.cnf.

If you edit the plist file, then uncheck the installer
option (when executing the new DMG) that installs it on subsequent
upgrades. Otherwise, your edited plist file will be overwritten, and all
edits will be lost.
-------
[15 Sep 2016 3:22] Rob Lewis
Thanks, that helps a lot. 

I do have some issues with your conclusion: 

"The default plist definition is written with less sophisticated use cases
in mind. For more complicated setups, you may want to remove some of the
arguments and instead rely on a MySQL configuration file, such as my.cnf.

If you edit the plist file, then uncheck the installer
option (when executing the new DMG) that installs it on subsequent
upgrades. Otherwise, your edited plist file will be overwritten, and all
edits will be lost." 

Seems to me that if you have a more complicated setup, you'd likely want to remove ALL of the .plist arguments, rather than worry about which file governs in every situation. Is there a special version of the .plist file that says, in effect, "don't look at me, look at the .cnf file"? If I understand, I don't think you can simply delete the .plist and still have launchd start the daemon. Am I wrong? 

Finally, a point of terminology: one doesn't "execute" a DMG file per se. Double-clicking it can mount a disk image that can contain an executable installer (or other program(s)).
[21 Sep 2016 15:53] Philip Olson
Hi Rob, good points. Both have been addressed, please have another look :)
[27 Sep 2016 18:04] Philip Olson
The documentation was updated accordingly, thank you for the bug report and additional feedback.  Status->Closed.