MySQL 5 : le checklist en cas de pépin

Comme les commentaires le montrent, si l'installation de MySQL peut prendre 5 minutes et se dérouler comme un charme, le moindre problème peut vite bloquer le débutant pendant des jours. Et plus le débutant se débat, plus il fait des dégâts sur son système.
Je vous propose donc ici une petite checklist des choses à vérifier si votre installation de MySQL sur Mac OS X tourne mal.

1) Si vous avez installé une ou plusieurs autres versions de MySQL et que vous souhaitez repartir de zéro, le plus simple est de localiser tous les éléments liés à MySQL et de les supprimer. On utilise pour cela la base locate, qu'il convient de mettre à jour au préalable :

sudo /usr/libexec/locate.updatedb 
locate -i mysql

ensuite faites le tri dans ce que vous voyez, et supprimez les éléments appartenant aux anciennes installation de MySQL (sans doute dans /usr/local/, /Library/LaunchDaemon/, /Library/StartupItems/, ...)

2) Vérifiez votre PATH : les binaires de MySQL doivent se trouver dans votre PATH pour être exécutables sans indiquer leur chemin complet. Si la commande which mysql ne renvoie rien, ajoutez /usr/local/mysql/bin/ à votre PATH.

3) Vérifiez que le serveur mysqld est lancé (ps auxwww | grep mysqld) ou se lance bien (sudo /usr/local/mysql/bin/mysqld_safe).

4) Vérifiez que le socket du serveur existe quand il est lancé :

netstat -f unix | grep mysql 
ls -l /tmp/mysql.sock

Si l'une de ces deux commandes ne retourne pas le chemin du socket, alors soit le socket est ouvert par le serveur mais supprimé par un autre process, soit le socket n'est pas ouvert par le serveur car il existe déjà.

5) Vérifiez que vous essayez bien d'accéder au serveur MySQL à partir d'un logiciel qui saura s'y connecter (php doit connaître le chemin du socket, le client mysql aussi). Si vous tentez une connexion réseau, vérifier aussi que mysqld ouvre un port réseau (netstat -alnf inet | grep 3306).

6) Jetez un œil aux fichiers de log de MySQL. Si le serveur ne se lance pas du tout, cela ne vous aidera probablement pas, mais si il se lance et quitte inopinément, ou si il se lance dans un état inutilisable, vous trouverez probablement des informations intéressantes dans ces fichiers. Pour l'installation de MySQL via le package officiel, les fichiers de log se trouvent normalement dans /usr/local/mysql/data/, sous le nom de localhost.err ou de votre-machine.err.

Je compléterai cette liste au fil du temps... N'hésitez pas à faire des suggestions !

Related posts

8 comments

  1. Tout d'abord merci infiniment pour ces suggestions d'investigation.
    Entre temps j'ai effectivement parcouru l'article de Patpro "Checkliste en cas de pépin" et effectivement ça s'est mis d'un seul coup à fonctionner lorsque j'ai tapé la commande de lancement de mySQL dans le Terminal :
    sudo /usr/local/mysql/bin/mysqld_safe

    Sauf erreur cette commande n'est pas indiquée dans l'article d'installation en 5 mn.
    Ensuite, je n'ai eu plus qu'à enregistrer mon php.ini pour modifier l'adresse de mysql.sock et depuis tout roule...

    Voici le détail de ce que j'ai fait à partir du présent article jusqu'à résolution du problème :

    ====
    Bon, le temps de taper le premier message dans les commentaires du blog de patpro et je m’aperçois qu’il a écrit un nouvel article en cas de pépin ici :

    edit de patpro : je renvoie les gens au post dans les newsgroups pour le détail de tes aventure ;)

    ====

    Merci pour ces deux articles didactiques.
    J'espère qu'à la prochaine installation, je vais pouvoir tout faire marcher du premier coup.

    Pierre

  2. Avec Léopard il me semble que le dossier MySQLCOM s'installe dans /usr/local/ et non pas dans /Library/StartUpItems/.
    J'ai donc tout simplement fait une copie du dossier MySQLCOM dans /Library/StartUpItems/ là où il devrait se trouver...
    Ensuite soit redémarrer le mac soit démarrer MySQL par le terminal...

    Au démarrage léopard indique que MySQLCOM n'a pas les bon droits et propose de redémarrer et de corriger. Accepter et tout redevient OK...

  3. Bonjour je suis votre procédure afin d effacer mes anciennes versions de MySQL avec le terminal mais comment fait on pour supprimer les différentes lignes qui font références a vos nom de dossiers situés ci-dessus?
    Merci je suis débutant et les commandes de terminal sont un peu de l 'hébreux pour moi.Amicalement

  4. Je pense qu'avant de se lancer dans la suppression il serait bon de commencer à bien connaître l'environnement de la ligne de commande.
    La commande de suppression c'est rm, malheureusement, son utilisation est dangereuse. Il convient donc d'abord de te former un peu au shell, et à rm. Ensuite seulement tu pourras supprimer les fichiers que tu souhaites en évitant les pièges.
    L'alternative serait d'utiliser un outils qui te permette de faire les manipulation en mode graphique. Cela permet d'éviter les gros accidents qui arrivent facilement avec rm.

  5. Merci pour votre réponse mais le problème est que je n arrive plus a démarrer mon mysql donc que puis je faire pour remédier à cela?
    Merci d 'avance.

  6. J'ai essaye de réinstaller plusieurs fois MySQL mais rien n'y fait il ne veut pas démarrer.Donc seul solution desinstaller tout proprement, mais comment faire a part avec le terminal?
    Je debute avec l'utilisation de terminal et j'ai un grand besoin de mon MysQL.
    Amicalement

  7. Flasounet : malheureusement, je ne peux pas assurer le service après vente de MySQL. Je t'encourage à te tourner vers des forums, dont l'interactivité sera plus propice à une aide constructive qu'une simple enfilade de commentaires.

    Si tu veux un peu de support en direct, tu peux aussi essayer sur irc (serveurs IRCNET, channel #macsupport). C'est absolument sans garantie aucune, parce que j'ai aussi une vie à côté et que je ne passe pas mon temps à dépanner les gens.

Laisser un commentaire

Votre adresse e-mail 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.