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í

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!


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>

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

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

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>

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

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.