Iniciar y detener 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, se creará el demonio de lanzamiento com.oracle.oss.mysql.mysqld y el panel de preferencias de MySQL usa el mecanismo launchd para iniciar y detener mysql. Si habilitas "Iniciar automáticamente el servidor MySQL en el inicio", mysqld se habilita automáticamente después de iniciar tu Mac.
El nombre del archivo pid creado por el demonio de inicio no es compatible con el creado y esperado por el script mysql-server.
El nombre del archivo pid del demonio de inicio creado mientras se ejecuta es mysql.local.pid , la secuencia de comandos espera un nombre basado en el nombre de host de su Mac, .local o nombre de computadora.
Por lo tanto, use el panel de pref. MySQL / launchctl o el script para iniciar y detener mysqld.
Hasta cierto punto, puede hacer que ambos métodos sean compatibles modificando el archivo com.oracle.oss.mysql.mysqld :
Después de detener mysql, reemplaza 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.example.com), LocalHostName (por ejemplo, host.local) o ComputerName (por ejemplo, host). Probablemente lo mejor es usar un nombre de host. Puede obtener un nombre de host con el nombre de host con scutil --get HostName
o establecerlo con sudo scutil --set HostName your_hostname
.
También puede obtener el nombre de la secuencia de comandos de mysql-server realmente utilizado, después de detener el daemon de inicio e iniciar mysqld con mysql-server start
, al verificar el directorio de datos de mysql con sudo ls /usr/local/mysql/data
. Use el nombre que se encuentra allí para ajustar el nombre pid del plist.
Es posible que tenga que convertir el archivo daemon de inicio a xml para editarlo. La aplicación TextWrangler la abre como un archivo xml inmediatamente.
Vuelva a cargar el plist con launchctl después.
Ahora debería poder iniciar y detenerse con el panel de preferencias de MySQL y el script mysql.server.
Si ha habilitado "Iniciar automáticamente el servidor MySQL en el inicio", no puede detener el servidor, incluso después de modificar el plist, con el script porque launchd anula cualquier parada comando después de unos segundos y lanza mysqld nuevamente.