Inicio automático del servidor MySQL en Mac OS X Yosemite / El Capitan

84

Me gustaría iniciar automáticamente el servidor MySQL al inicio. Esto fue posible en Mavericks, pero parece que no funciona en Yosemite.

editar : parece que esto también funciona con El Capitán

ingrese la descripción de la imagen aquí

Xaver
fuente

Respuestas:

143

@dcc estuvo muy cerca. Así es como MySQL se inicia automáticamente de nuevo en Yosemite:

El com.mysql.mysql.plisten /Library/LaunchDaemons:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <true/>
    <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>

Además, cambié los permisos en función de esta respuesta

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist

Finalmente ejecuto este comando

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

Si tiene alguna adición, ¡compártala a continuación!

Xaver
fuente
1
Debe marcar su Q como respondida para que otras personas encuentren su solución.
Davidcondrey
26
Sueño con el día en que llegue OSX 10.11 y no tendré que gastar 2 horas para arreglar apache, php y mysql. Tal vez sea el momento de pasar a Vagrant ..
dvk3
10
solo dos horas! jaja
Xaver
8
Realmente funciona. Por cierto, los dos primeros comandos se pueden combinar en uno:sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
Rockallite
1
¡Es muy útil tener esto para reducir mis dos horas y hacer que funcionen nuevamente! Gracias chicos.
Nigel B. Peck
13

Seguí @Xavers direcciones y al intentar ejecutar el comando

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

se le dio el error:

/Library/LaunchDaemons/com.mysql.mysql.plist: Lista de propiedades no válidas

Después de rascarme la cabeza por un minuto, descubrí que al eliminar la declaración DOCTYPE DTD en la parte superior, el error desaparecía y, al reiniciar, el servidor mySQL se está ejecutando.

Entonces, mi XML se ve así:

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <true/>
    <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>
Yevgeny Simkin
fuente
9

Si instaló mysql con homebrew , puede obtener instrucciones sobre cómo iniciarlo automáticamente escribiendo brew info mysql.

Por ejemplo, la salida en mi máquina es:

To have launchd start mysql at login:
  ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Kyle Chadha
fuente
2

Crear /Library/LaunchDaemons/com.mysql.mysql.plisty guardarlo con el siguiente plist:

<!--?xml version="1.0" encoding="UTF-8"?-->

<plist version="1.0">
    <dict>
        <key>KeepAlive</key>
        <true>
            <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>
        </true>
    </dict>
</plist>

Luego cargue el archivo plist recién creado

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
Davidcondrey
fuente
no funciona, todavía dice "detenido" después de un reinicio :(
Xaver
apachectl startinicia el servidor? están relacionados?
Xaver
El sudo launchctl load -w...lanza un errorInvalid property list
Xaver
Estoy fuera de posibilidades, lo siento
Davidcondrey
1
ok, gracias de todos modos, publicaré la solución si puedo conseguir una
Xaver
2

Este artículo me ayuda a resolver el problema del error no válido. Plist corregido que utilicé a continuación.

Cómo saber qué línea del archivo plist es incorrecta

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-   1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<key>KeepAlive</key> 
<true/> 
<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>
Sharvin
fuente
1

Ninguna de las otras respuestas proporcionadas funcionó para iniciar automáticamente mi servidor MySQL. Seguí las instrucciones del manual de MySQL 5.6 y finalmente se inicia automáticamente de nuevo. Crea el archivo /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plistcon el siguiente contenido:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <key>ProgramArguments</key>
        <array>
            <string>/usr/local/mysql/bin/mysqld</string>
            <string>--user=_mysql</string>
            <string>--basedir=/usr/local/mysql</string>
            <string>--datadir=/usr/local/mysql/data</string>
            <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
            <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
            <string>--port=3306</string>
        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>

Y ejecute los siguientes comandos después de crear el archivo:

cd /Library/LaunchDaemons
sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist
NobleUplift
fuente
0

Cuando usé el plist sugerido en respuestas anteriores, cambié el usuario a _mysql para mi sistema, pero el botón "Detener servidor MySQL" en el panel de preferencias de MySQL ya no funcionaba. La KeepAlivetecla hará que el proceso se inicie nuevamente inmediatamente después de presionar el botón Detener. Usé la clave RunAtLoadpara que se iniciara al reiniciar, pero permití que el botón en el panel siguiera funcionando.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>RunAtLoad</key>
    <true/>
    <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>

Luego, como en las otras respuestas, corrió:

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

Ahora, MySQL se inicia al reiniciar, pero el panel de MySQL en Preferencias del sistema aún funciona. Estoy ejecutando El Capitán, 10.11.2

Franklin F
fuente