Le démarrage et l’arrêt du serveur MySQL via Préférences Pane / launchd et d’autre part via via sudo /usr/local/mysql/support-files/mysql.server start/stop
ne sont pas vraiment compatibles.
Après avoir choisi "Support Launchd" dans le programme d'installation MySQL, le démon de lancement com.oracle.oss.mysql.mysqld sera créé et la sous-fenêtre des préférences MySQL utilise le mécanisme launchd pour démarrer et arrêter mysql. Si vous activez "Démarrer automatiquement le serveur MySQL au démarrage", mysqld est activé automatiquement après le démarrage de votre Mac.
Le nom du fichier pid créé par le démon de lancement n'est pas compatible avec celui créé et attendu par le script mysql-server.
Le nom de fichier pid du démon de lancement créé lors de l'exécution est mysql.local.pid , le script attend un nom basé sur le nom d'hôte, le nom .local ou le nom de l'ordinateur de votre Mac.
Vous pouvez donc utiliser le panneau de préférences de MySQL / launchctl ou le script pour démarrer et arrêter mysqld.
Dans une certaine mesure, vous pouvez rendre les deux méthodes compatibles en modifiant le fichier com.oracle.oss.mysql.mysqld :
Après avoir arrêté mysql, remplacez le tableau
<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>
par
<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>
avec $ name: soit HostName (par exemple, host.example.com), LocalHostName (par exemple, host.local) ou ComputerName (par exemple, host). Le mieux est probablement d'utiliser un nom d'hôte. Vous pouvez obtenir un nom d’hôte avec scutil --get HostName
ou avec le nom d’hôte sudo scutil --set HostName your_hostname
.
Vous pouvez également obtenir le nom du pid du script mysql-server réellement utilisé - après avoir arrêté le démon de lancement et démarré avec mysqld mysql-server start
- en vérifiant le répertoire de données de mysql avec sudo ls /usr/local/mysql/data
. Utilisez le nom trouvé ici pour ajuster le nom du pid du plist.
Vous devrez peut-être convertir le fichier daemon de lancement en fichier XML pour le modifier. L'application TextWrangler l'ouvre immédiatement en tant que fichier XML.
Rechargez ensuite le plist avec launchctl.
Maintenant, vous devriez pouvoir démarrer et vous arrêter avec le panneau de préférences MySQL et le script mysql.server.
Si vous avez activé "Démarrer automatiquement le serveur MySQL au démarrage", vous ne pouvez pas arrêter le serveur - même après modification du plist - avec le script, car launchd remplace toute commande d' arrêt après quelques secondes et lance à nouveau mysqld.