MySQL 5 : le plist de démarrage

Dans un précédent article j'ai exposé l'installation triviale d'un MySQL 5 sur une base de Mac OS X 10.5 propre. J'ai aussi mentionné le StartupItem fourni de base avec le package MySQL. Ce StartupItem étant conçu pour Mac OS X 10.4, il est intéressant de voir comment on doit maintenant lancer un serveur MySQL sur Leopard.

Si vous aviez installé le script de démarrage de MySQL 5 mentionné dans le précédent article, il faudra le désactiver ou le supprimer. Pour le supprimer, vous pouvez exécuter les commandes suivantes dans le terminal :

sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop 
sudo rm -r /Library/StartupItems/MySQLCOM 
sudo rm /tmp/mysql.sock

Ensuite, vous pouvez créer le fichier /Library/LaunchDaemons/org.mysql.mysqld.plist avec votre éditeur favori, et coller dedans :

<?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>Label</key>
	<string>org.mysql.mysqld</string>
	<key>OnDemand</key>
	<false/>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/local/mysql/bin/mysqld</string>
		<string>--socket=/tmp/mysql.sock</string>
		<string>--user=mysql</string>
		<string>--port=3306</string>
		<string>--datadir=/usr/local/mysql/data</string>
		<string>--pid-file=/usr/local/mysql/data/localhost.pid</string>
		<string>--bind-address=127.0.0.1</string>
	</array>
	<key>ServiceIPC</key>
	<false/>
</dict>
</plist>

Une fois que ce fichier est sauvé, il faut s'assurer qu'il appartient bien à root, sinon launchctl vous envoie sur les roses (cf. les commentaires de Pierre29). Dans le doute, exécutez la commande

sudo chown root /Library/LaunchDaemons/org.mysql.mysqld.plist

Vous pouvez ensuite activer ce plist par la commande

sudo launchctl load /Library/LaunchDaemons/org.mysql.mysqld.plist

MySQL devrait être alors lancé automatiquement pour vous. Il placera son socket dans /tmp/ et autorisera aussi les connexions TCP sur l'interface 127.0.0.1.

Je vous renvoie à la documentation de launchctl pour le reste des options et commandes disponibles et pour les détails sur l'utilisation de launchd. Votre serveur MySQL est désormais géré proprement par launchd, exactement comme sur un Mac OS X Serveur.

edit : ajout du chown root sur le fichier

3 comments

  1. Bon, j'ai du me résoudre à utiliser cette astuce de lancement puisque que contrairement à l'installation que j'ai faite sur un PowerPC sans avoir besoin de ce script, sur le MacBook Air, MySQL ne se lance pas tout seul...
    Seulement voilà ce que j'obtiens dans le terminal :
    ----
    xxx:/ rldge$ sudo launchctl load /Library/LaunchDaemons/org.mysql.mysqld.plist
    launchctl: Dubious ownership on file (skipping): /Library/LaunchDaemons/org.mysql.mysqld.plist
    nothing found to load
    xxx:/ rldge$
    ----
    Mon fichier org.mysql.mysqld.plist est pourtant bien au bon endroit avec le bon contenu...
    Une idée ?

    Merci

    Pierre

  2. Finalement, contrairement à ce que j’avais cru, mySQL ne démarre pas tout seul au lancement de la machine.
    J’ai alors lu avec intérêt l’article ci-dessus :
    http://www.patpro.net/blog/index...

    Malheureusement, comme indiqué dans mon premier commentaire, cela n’a pas fonctionné pour moi.

    D’une part, les commandes :
    sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop
    sudo rm -r /Library/StartupItems/MySQLCOM
    ont envoyé un message d’erreur.
    D’autre part, en exécutant la commande :
    sudo launchctl load /Library/LaunchDaemons/org.mysql.mysqld.plist
launchctl
    J’obtiens un nouveau message d’erreur.

    En désespoir de cause, je me suis donc rabattu sur l’article ici :
    hivelogic.com/articles/in...

    et j’ai appliqué le paragraphe :

    --
    edit de patpro : je renvoie les gens à l'url que tu mentionnes pour les détails. La ligne intéressante étant celle-ci :
    --
    sudo chown root /Library/LaunchDaemons/com.mysql.mysqld.plist

    Cela fonctionne maintenant pour moi de manière satisfaisante.

    Pierre

  3. Effectivement, comme tu le fais remarqué, j'ai oublié de mentionner le chown root du fichier. D'ailleurs, le message d'erreur de launchctl aurait du te mettre la puce à l'oreille :)
    Je vais rajouter cette commande dans l'article. Merci.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.