Why doesn't MySQL start unless InstantRails does first?

Because under InstantRails, MySQL is not configured to run as a service. When you start IR it starts up it’s mysql server along with it’s apache server. When you exit IR, those applications are stopped as well. This is suitable for development, as you don’t have the overhead of these apps running in the background when you aren’t using them.