relocaliser MySQL avec Ubuntu

Si vous voulez déplacer le répertoire par défaut où sont stockés les paramètres et les bases de données de MySQL, sur un serveur Ubuntu, vous allez rapidement être confrontés, à des erreurs lors du redémarrage de votre serveur MySQL.

Avec mon équipe,il y a quelques jours en voulant déplacer le répertoire par défaut de MySQL sur un Ubuntu Server 10.10, nous avons été confronté à une rafale d'erreurs suivantes :

100809 09:30:00 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
100809 09:30:00 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
100809 09:30:00  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.

Dans le fichier de configuration de MySQL /etc/mysql/my.cnf, nous avions bien modifié la variable datadir. Et l'erreur persistait !

Nous faisions le même genre de modifications, sur nos autres serveurs sans aucuns problèmes ... Quelque chose avait changé, mais quoi ?

APPARMOR :(

En effet, le système de protection AppArmor, doit être modifié, pour autoriser la prise en compte du changement de répertoire.

Il faut éditer le fichier /etc/apparmor.d/usr.sbin.mysqld, et modifier les 2 lignes qui pointent vers l'ancien répertoire :

#  /var/lib/mysql/ r,
#  /var/lib/mysql/** rwk,
   /nouveau répertoire/ r,
   /nouveau répertoire/** rwk,

Un petit service apparmor restart, suivit d'un service mysql restart et hop, hop, hop, tout redémarre sans problème !