Aujourd’hui j’ai eu la bonne surprise de voir que MAMP (Macintosh, Apache, Mysql and PHP) était mort. Lorsque je démarrais mon serveur, j’avais cette erreur : « Error could not connect to mysql server » sur la page d’accueil du serveur, accompagnée de celle-ci :
/Applications/MAMP/Library/bin/mysqlcheck: Got error: 1045: Access denied for user ‘root’@’localhost’ (using password: YES) when trying to connect (au démarrage de l’application).
Après quelques recherches, c’est visiblement tout à fait réparable, il suffit de changer le mot de passe du serveur MySQL à quelques endroits dans MAMP en suivant ces tutos par exemple :
- http://mikecroteau.wordpress.com/2011/10/07/mamp-error-could-not-connect-to-mysql-server/
- http://www.developpez.net/forums/d1087809/bases-donnees/mysql/administration/erreur-passe/
- et bien d’autres !
Cependant, dans mon cas, j’ai évidement oublié le mot de passe de base, donc impossible de le changer (enfin j’ai essayer toutes ma panoplie habituelle, mais aucun n’a pas marché : autre problème de MAMP, ou trou de mémoire, nul ne le sait …)
Seule possibilité restante ; restaurer la BD avec les fichiers auxquels j’ai toujours accès. MAMP stocke votre BD dans MAMP/db/mysql. Chaque table comporte 3 fichiers dont l’extension est peu connue ;
- *.frm : la structure de votre table
- *.MYD : les données de la table
- *.MYI : les indices (permettant notamment la réparation de la table).
Grâce à ses 3 fichiers, vous pouvez récupérer toutes les tables. Par précaution, je n’ai pas viré MAMP de suite, j’ai pris ma Virtual Machine, et fait les opérations suivantes ;
- Copier le repertoire représentant votre BD dans celui du serveur MySQL de la VM
$ sudo cp -r myDB/ /etc/lib/mysql
- Ensuite, par sureté, assurez vous que mysql ait les droits d’accès
$chown -R mysql.mysql /var/lib/mysql
- Finalement, redémarrez votre serveur MySQL
$ /etc/init.d/mysql restart
Vous pouvez maintenant allez dans le PHPMyAdmin de votre VM, et faire un mysqldump digne de ce nom !
A l’avenir, pensez donc, comme moi, à faire des sauvegardes de vos databases, on n’est jamais trop prudent 😉