Dans un environnement de test, vous ne pensez pas forcément à sauvegarder l'intégralité de vos bases. Alors, pour être sur les conservez, vous pouvez déplacer l'endroit où MySQL stocke les données.
Pour se faire, ouvrez un terminal
Stopper mysql :
/etc/init.d/mysql stop
Créer le nouveau répertoire qui accueillera les base de données. Pour l'exemple, on créera un répertoire MySQL dans votre home (~ remplace /home/<votreutilisateur>)
mkdir ~/MySQL
Par défaut, les données de MySQL sont stockées dans /var/lib/mysql. Donc rendez-y vous (pas besoin d'utiliser "sudo" pour ces commandes)
cd /var/lib/mysql ls
Chez moi, cela donne :
-rw-r--r-- 1 root root 0 2010-01-30 21:36 debian-5.1.flag -rw-rw---- 1 mysql mysql 10485760 2010-01-30 22:22 ibdata1 -rw-rw---- 1 mysql mysql 5242880 2010-01-30 22:22 ib_logfile0 -rw-rw---- 1 mysql mysql 5242880 2010-01-30 21:36 ib_logfile1 drwxr-xr-x 2 mysql root 4096 2010-01-30 21:36 mysql -rw------- 1 root root 6 2010-01-30 21:36 mysql_upgrade_info drwx------ 2 mysql mysql 4096 2010-01-30 21:37 phpmyadmin
Le dossier qui nous intéresse est "mysql". Le dossier "phpmyadmin" est là puisque j'ai installé phpMyAdmin. Les autres fichiers sont générés par MySQL et servent à sa gestion
On va donc copier l'intégralité du dossier "mysql" dans ~/MySQL Toujours dans /var/lib/mysql, faites (necessite de nouveaux sudo) :
cp -r mysql ~/MySQL
Maintenant, il faut changer le propriétaire et le groupe du dossier pour que seul MySQL puisse se servir du dossier
chow -R mysql:mysql ~/MySQL
Voilà ! Les fichiers sont à l'abri. Maintenant, il reste à reconfigurer MySQL pour qu'il utilise dorénavant le nouvel emplacement
Éditez le fichier /etc/mysql/my.conf
Remplacer
datadir = /var/lib/mysql
Par
datadir = /home/<votreutilisateur>/MySQL
On pourrait s'arrêter là, et redémarrer MySQL. Seulement, il est fort probable que vous ayez AppArmor. Si c'est le cas, celui là empêchera MySQL de redémarrer, car sa configuration ne correspondra pas à la nouvelle de MySQL
Éditez le fichier /etc/apparmor.d/usr.sbin.mysqld
Vous y trouverez quelque chose de similaire
# vim:syntax=apparmor # Last Modified: Tue Jun 19 17:37:30 2007 #include <tunables/global> /usr/sbin/mysqld { #include <abstractions/base> #include <abstractions/nameservice> #include <abstractions/user-tmp> #include <abstractions/mysql> #include <abstractions/winbind> capability dac_override, capability sys_resource, capability setgid, capability setuid, network tcp, /etc/hosts.allow r, /etc/hosts.deny r, /etc/mysql/*.pem r, /etc/mysql/conf.d/ r, /etc/mysql/conf.d/* r, /etc/mysql/my.cnf r, /usr/sbin/mysqld mr, /usr/share/mysql/** r, /var/log/mysql.log rw, /var/log/mysql.err rw, /var/lib/mysql/ r, /var/lib/mysql/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /var/run/mysqld/mysqld.pid w, /var/run/mysqld/mysqld.sock w, }
Remplacer /var/lib/mysql par /home/<votreutilisateur>/MySQL/
[...] /var/log/mysql.err rw, /home/<votreutilisateur>/MySQL/ r, /home/<votreutilisateur>/MySQL/** rwk, /var/log/mysql/ r, [...]
Maintenant, vous pouvez redémarrer MySQL !
/etc/init.d/mysql start
Sources :
la plupart des utilisateurs créent de 2 à 3 partitions sur leur(s) installation(s)
L'intérêt de ce mode de partitionning est qu'en cas de re-installation, les données utilisateurs (données, profils, compte courrier, favoris internet, thème de bureau, etc.) sont sauvegardées et aussitôt exploitable. Ça n'est malheureusement pas le cas pour les bases de données MySql, et un utilisateur non averti, écrasera sans le savoir ses bases de données qui sont stockées sur /var/lib/mysql (et donc la parttion '/' système.
Il peut donc être intéressant pour cela de déplacer ses bases de données dans la partition /home.
Arrêter mysql :
sudo /etc/init.d/mysql stop
Déplacer le répertoire des bases de données :
sudo mv /var/lib/mysql /home/mysql
Le déplacement par 'mv' permet de ne pas modifier les droits originaux.
Créer un lien symbolique afin de ne pas "casser" les fichiers de configuration originel de MySql :
sudo ln -s /home/mysql /var/lib/mysql
Pour les versions d'Ubuntu utilisant Apparmor, il vous faut modifier le fichier de configuration mysql dans Apparmor.
Éditer /etc/apparmor.d/usr.sbin.mysqld
Trouver les deux lignes :
/var/lib/mysql/ r, /var/lib/mysql/** rwk,
et modifier les en :
/home/mysql/ r, /home/mysql/** rwk,
On relance la configuration d'Apparmor :
sudo /etc/init.d/apparmor reload
on relance MySql :
sudo /etc/init.d/mysql start
Et voilà.