Partage de données mysql entre mac et ubuntu

  • warning: array_map(): Argument #2 should be an array in /var/www/titouille.ch/www/modules/system/system.module on line 1050.
  • warning: array_keys() expects parameter 1 to be array, null given in /var/www/titouille.ch/www/includes/theme.inc on line 1845.
  • warning: Invalid argument supplied for foreach() in /var/www/titouille.ch/www/includes/theme.inc on line 1845.
Portrait de titouille

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 Smile

Sources : 
la case de l'oncle tom
le blog de jean-david techer