Modifier l’emplacement de vos bases MySQL

Aujourd’hui je vous propose un petit tutoriel qui va vous permettre de modifier le dossier où MySQL stocke vos bases de données par défaut. J’écris ce tuto / mémo car les différents tutoriels similaires que j’ai pu trouver sur le net ne fonctionnaient pas forcément. Je décide donc de faire le mien afin d’avoir ma propre référence (et je sais qu’elle marche).

Les intérêts de modifier ce dossier sont nombreux, parmi ceux-ci :

  • Meilleure gestion de votre architecture. Vous savez où sont vos bases
  • Facilité de la gestion des backups. Et oui, mon dossier se trouve sur une partition autre que la partition système et donc plus facile à sauvegarder

Dans mon cas, j’ai décidé de déplacer le dossier MySQL de /var/lib/mysql vers /home/mysql car j’ai déjà déplacé mon dossier /home/ sur une autre partition. Voici la recette et ses quelques subtilités.

Note : pensez à passer en mode root avant de lancer ces commandes…

On commence par stopper le service mysql :

service mysql stop

On peut maintenant déplacer le répertoire de données. J’utilise mv pour conserver les droits par défaut sur les dossiers :

mv /var/lib/mysql /home/mysql

Un petit lien symbolique pour éviter de réécrire tous les fichiers de configuration :

ln -s /home/mysql /var/lib/mysql

Enfin, vous pouvez vérifier que mysql conserve bien ses droits sur ses dossiers :

chown -h mysql:mysql /home/mysql

Et c’est ici que de nombreux tutoriels s’arrêtent. Or si vous travaillez sur une version d’Ubuntu supérieure à 10.04 LTS, MySQL refusera systématiquement de redémarrer. En fait, depuis cette version est installé par défaut le logiciel de sécurité Apparmor (pour Application Armor). Ce logiciel permet de verrouiller les applications en limitant strictement leur accès aux seules ressources auxquelles elles ont droit sans perturber leur fonctionnement. Et devinez quoi, il faut indiquer à Apparmor que le dossier /var/lib/mysql a été déplacé, pour qu’il autorise MySQL à accéder au nouveau dossier /home/mysql !

Il suffit donc de modifier le fichier /etc/apparmor.d/usr.sbin.mysqld. Les deux lignes suivantes :

/var/lib/mysql/ r,
 
/var/lib/mysql/** rwk,

deviennent :

/home/mysql/ r,
 
/home/mysql/** rwk,

Et voilà, nous pouvons recharger Apparmor, puis redémarrer MySQL.

service apparmor reload
 
service mysql start

Source : la documentation Ubuntu

Cet article vous a plu ? Partagez-le sur les réseaux sociaux !

Twitter Facebook Google Plus email