Ceci est une ancienne révision du document !
Déplacer le répertoire /var/lib/mysql sur MariaDB
Pour éviter la saturation de la partition système, il est souvent judicieux de déplacer le répertoire /var/lib/mysql vers le répertoire /home . Le déplacement du répertoire /var/lib/mysql sous MariaDB n'est pas aussi évident que pour MySQL.
Pré-requis - Difficultés
Il faut bien sûr un serveur MariaDB en fonctionnement. Ce tutoriel a été testé sur une distribution Debian 9 (Strech), Debian 10 (Buster) et Debian 11 (Bullseye). Toutes les lignes de commande s'exécute dans un terminal en mode super-administrateur (root).

Arrêt de MariaDB
Il faut arrêter le service MariaDB avec la commande suivante :
systemctl stop mariadb.service
Déplacement du répertoire /var/lib/mysql
Nous déplaçons le répertoire /var/lib/mysql vers le répertoire /home puis nous donnons les droits nécessaires.
mv /var/lib/mysql /home chown -R mysql:ad /home/mysql
Modification de la configuration de MariaDB
Nous modifions le chemin de la base de données dans le fichier de configuration de MariaDB. Le fichier à modifier est /etc/mysql/mariadb.conf.d/50-server.cnf : On utilise nano :
nano /etc/mysql/mariadb.conf.d/50-server.cnf
Recherchez la ligne suivante :
datadir = /var/lib/mysql
et modifiez là pour indiquer le nouveau chemin
datadir = /home/mysql
Enregistrez puis quittez.
Modification du service mariadb.service
Si nous voulons que le service MariaDB se lance correctement nous devons modifier le fichier /etc/systemd/system/multi-user.target.wants/mariadb.service : C'est pour éviter l'erreur mysql can’t creat test files .lower-test au démarrage du service ou les messages d'erreurs suivants :
- /usr/sbin/mysqld: Can't create file '/var/log/mysql/error.log' (errno: 13 "Permission denied")
- [ERROR] mysqld: File '/home/log/mysql/mysql-bin.index' not found (Errcode: 13 "Permission denied")
Nous éditons le fichier /etc/systemd/system/multi-user.target.wants/mariadb.service :
nano /etc/systemd/system/multi-user.target.wants/mariadb.service
Puis il faut commenter la ligne suivante
ProtectHome=true
avec le #, ce qui donne :
#ProtectHome=true
Ensuite, nous relançons systemd:
systemctl daemon-reload
Supprimer le fichier tc.log
Si le fichier /home/mysql/tc.log est existant, il est nécessaire de l'effacer. Nous éviterons l'erreur [ERROR] Can’t init tc log. Pour vérifier la liste des fichiers .log présents :
ls /home/mysql/*.log
Si le fichier /home/mysql/tc.log est présent dans la liste, un petit
rm /home/mysql/tc.log
Démarrage du service mariaDB
Maintenant, il suffit de redémarrer le service mariaDB avec la ligne suivante :
systemctl start mariadb.service
Aller plus loin
Par précaution, il faut vérifier les tables. Nous allons exécuter l'utilitaire d'auto-réparation mysqlcheck.
mysqlcheck -u root -p --auto-repair --check -A
L'utilitaire vous demandera le mot de passe root de votre accès à mariaDB. Puis la vérification se lancera.
Notes de version
- [01/07/2018] : Création de l'article
- [22/09/2020] : MAJ pour Debian Buster (Debian 10)
- [02/11/2021] : MAJ Debian Bullseye (Debian 11)
Auteurs et sources
- Auteur : montuy337513
Navigation
Autres liens rapides pouvant vous intéresser