Partage de données mysql entre mac et ubuntu
Entre hier et aujourd'hui, je me suis attelé à la tâche pour installer OSX et Ubuntu en dual-boot sur mon macbook pro. Après avoir suivi le tutorial (et rajouté quelques informations) de ubuntu-fr, j'ai commencé à partager certaines données entre les 2 OS.
le but : quelque soit l'OS démarré, avoir accès aux mêmes données, sans duplication... les projets Flex, le web serveur, les données mysql, etc... Et c'est au niveau de mysql que la tâche a été ardue.
J'avais installé mysql sur mac, puis modifié l'emplacement des données pour les placer sur une partition partagée entre les 2 OS, dont le type est hfsplus (le standard mac).
Sur mac, pas de problèmes. Après avoir fait ce déplacement, tout a fonctionné. Je suis ensuite passé sur Ubuntu pour tenter la même opération, non sans mal. Après avoir installé mysql, je suis entré dans le vif du sujet.
Tout d'abord, problèmes de droits... Entre mac et ubuntu, l'utilisateur mysql n'a pas le même UID. J'ai donc changé celui de Ubuntu pour qu'il corresponde à celui de mac :
sudo gedit /etc/passwd
J'ai recherché l'utilisateur mysql et lui ai donné le UID 74, comme sur mac.
J'ai ensuite supprimé le répertoire de données par défaut et fait un lien symbolique dans /var/lib pour rediriger mysql sur ma partition partagée :
sudo rm -rf /var/lib/mysql sudo ln -s /mnt/data/web/mysql /var/lib/mysql
Après avoir fait quelques tests, je me suis retrouvé confronté au message d'erreur suivant :
Feb 10 12:55:21 titouille-mbp mysqld[13575]: InnoDB: The error means mysqld does not have the access rights to Feb 10 12:55:21 titouille-mbp mysqld[13575]: InnoDB: the directory. Feb 10 12:55:21 titouille-mbp mysqld[13575]: InnoDB: File name ./ibdata1 Feb 10 12:55:21 titouille-mbp mysqld[13575]: InnoDB: File operation call: 'open'. Feb 10 12:55:21 titouille-mbp mysqld[13575]: InnoDB: Cannot continue operation. Feb 10 12:55:21 titouille-mbp mysqld_safe[13582]: ended
Que j'ai pu résoudre en modifiant le fichier /etc/apparmor.d/usr.sbin.mysqld pour y intégrer les répertoires :
# lignes existantes, laissées tel quel : /var/lib/mysql/ r, /var/lib/mysql/** rwk, # lignes rajoutées /mnt/data/web/mysql/ r, /mnt/data/web/mysql/** rwk,
C'est alors que je me suis retrouvé avec un autre message d'erreur :
titouille@titouille-mbp:/mnt/data/web/mysql$ sudo /etc/init.d/mysql restart * Stopping MySQL database server mysqld [fail] * Starting MySQL database server mysqld [ OK ] /usr/bin/mysqladmin: connect to server at 'localhost' failed error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
Le problème se situait dans le fichier /etc/mysql/debian.cnf que j'ai du éditer pour y remplacer les infos de user/password par les infos standard root/monMotDePasse :
# Automatically generated for Debian scripts. DO NOT TOUCH! [client] host = localhost user = root password = ******* socket = /var/run/mysqld/mysqld.sock [mysql_upgrade] user = root password = ******* socket = /var/run/mysqld/mysqld.sock basedir = /usr
Et enfin tout est rentré dans l'ordre
Sources :
la case de l'oncle tom
le blog de jean-david techer