Iniciando y parando el servidor MySQL a través del Panel de Preferencias/launchd y por otro lado a través de sudo /usr/local/mysql/support-files/mysql.server start/stop
no son realmente compatibles.
Después de elegir "Launchd Support" en el instalador de MySQL el demonio de lanzamiento com.oracle.oss.mysql.mysqld será creado y el panel de preferencias de MySQL utiliza el mecanismo launchd para iniciar y detener mysql. Si habilita "Automatically Start MySQL Server on startup", mysqld se habilita automáticamente después de iniciar su Mac.
El nombre del archivo pid creado por el demonio de lanzamiento no es compatible con el creado y esperado por el mysql-server script.
El nombre del archivo pid del demonio de lanzamiento creado mientras se ejecuta es mysql.local.pid El scriptespera un nombre basado en el nombre de host de su Mac, .local o nombre del ordenador.
Así que o bien utiliza el panel pref/launchctl de MySQL o el script para iniciar y detener mysqld.
Hasta cierto punto se pueden hacer compatibles ambos métodos modificando el archivo com.oracle.oss.mysql.mysqld sin embargo:
Después de detener mysql reemplazar la matriz
<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/mysql.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysql.local.pid</string>
</array>
por
<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/$name.err</string>
<string>--pid-file=/usr/local/mysql/data/$name.pid</string>
</array>
con $nombre: ya sea HostName (por ejemplo, host.ejemplo.com), LocalHostName (por ejemplo, host.local) o ComputerName (por ejemplo, host). Probablemente lo mejor es utilizar un nombre de host. Puede obtener un nombre de host con hostname con scutil --get HostName
o configurarlo con sudo scutil --set HostName your_hostname
.
También puede obtener el nombre del pid del servidor mysql script realmente utilizado - después de detener el demonio de lanzamiento e iniciar mysqld con mysql-server start
- comprobando el directorio de datos de mysql con sudo ls /usr/local/mysql/data
. Utilice el nombre que se encuentra allí para ajustar el nombre pid del plist.
Es posible que tenga que convertir el archivo del demonio de lanzamiento a xml para editarlo. La aplicación TextWrangler lo abre como archivo xml inmediatamente.
Recarga el plist con launchctl después.
Ahora debería ser capaz de iniciar y detener con el panel de preferencias de MySQL y el mysql.server script.
Si ha activado la opción "Iniciar automáticamente el servidor MySQL al iniciar", deberá no puede parar el servidor - incluso después de modificar el plist - con el script porque launchd anula cualquier Detener después de unos segundos y lanza mysqld de nuevo.