Recherche de site Web

Comment modifier un répertoire de données MySQL/MariaDB par défaut sous Linux


Après avoir installé les composants d'une pile LAMP sur un serveur CentOS/RHEL 7, vous souhaiterez peut-être faire plusieurs choses.

Certains d'entre eux concernent l'augmentation de la sécurité d'Apache et de MySQL/MariaDB, tandis que d'autres peuvent être applicables ou non en fonction de notre configuration ou de nos besoins.

Par exemple, en fonction de l'utilisation attendue du serveur de base de données, nous souhaiterons peut-être modifier le répertoire data par défaut (/var/lib/mysql) vers un emplacement différent. C'est le cas lorsqu'un tel répertoire est censé croître en raison d'une utilisation élevée.

Sinon, le système de fichiers dans lequel /var est stocké peut s'effondrer à un moment donné, provoquant la panne de l'ensemble du système. Un autre scénario dans lequel la modification du répertoire par défaut est celui où nous disposons d'un partage réseau dédié que nous souhaitons utiliser pour stocker nos données réelles.

Pour cette raison, dans cet article, nous expliquerons comment modifier le répertoire de données MySQL/MariaDB par défaut vers un chemin différent sur un serveur CentOS/RHEL 7 et des distributions Ubuntu/Debian.

Même si nous utiliserons MariaDB, les concepts expliqués et les étapes suivies dans cet article s'appliquent à la fois à MySQL et à MariaDB, sauf indication contraire.

Modification du répertoire de données MySQL/MariaDB par défaut

Remarque : Nous allons supposer que notre nouveau répertoire de données est /mnt/mysql-data. Il est important de noter que ce répertoire doit appartenir à mysql:mysql.

mkdir /mnt/mysql-data
chown -R mysql:mysql /mnt/mysql-data

Pour votre commodité, nous avons divisé le processus en 5 étapes faciles à suivre :

Étape 1 : Identifier le répertoire de données MySQL actuel

Pour commencer, il est utile d'identifier le répertoire de données actuel à l'aide de la commande suivante. Ne présumez pas simplement qu'il s'agit toujours de /var/lib/mysql puisqu'il aurait pu être modifié dans le passé.

mysql -u root -p -e "SELECT @@datadir;"

Après avoir entré le mot de passe MySQL, le résultat devrait être similaire à.

Étape 2 : Copier le répertoire de données MySQL vers un nouvel emplacement

Pour éviter la corruption des données, arrêtez le service s'il est en cours d'exécution avant de continuer. Utilisez les commandes bien connues systemd pour ce faire :

------------- On SystemD ------------- 
systemctl stop mariadb
systemctl is-active mariadb

------------- On SysVInit ------------- 
service mysqld stop
service mysqld status

OR

service mysql stop
service mysql status

Si le service a été arrêté, le résultat de la dernière commande doit être le suivant :

Copiez ensuite de manière récursive le contenu de /var/lib/mysql dans /mnt/mysql-data en préservant les autorisations et les horodatages d'origine :

cp -R -p /var/lib/mysql/* /mnt/mysql-data

Étape 3 : configurer un nouveau répertoire de données MySQL

Editez le fichier de configuration (my.cnf) pour indiquer le nouveau répertoire de données (/mnt/mysql-data dans ce cas).

vi /etc/my.cnf
OR
vi /etc/mysql/my.cnf

Localisez les sections [mysqld] et [client] et apportez les modifications suivantes :

Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock

Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock

Enregistrez les modifications, puis passez à l'étape suivante.

Étape 4 : Définir le contexte de sécurité SELinux sur le répertoire de données

Cette étape s'applique uniquement à RHEL/CentOS et à ses dérivés.

Ajoutez le contexte de sécurité SELinux à /mnt/mysql-data avant de redémarrer MariaDB.

semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
restorecon -R /mnt/mysql-data

Redémarrez ensuite le service MySQL.

------------- On SystemD ------------- 
systemctl stop mariadb
systemctl is-active mariadb

------------- On SysVInit ------------- 
service mysqld stop
service mysqld status

OR

service mysql stop
service mysql status

Maintenant, utilisez la même commande qu'à l'étape 1 pour vérifier l'emplacement du nouveau répertoire de données :

mysql -u root -p -e "SELECT @@datadir;"

Étape 5 : Créer une base de données MySQL pour confirmer le répertoire de données

Connectez-vous à MariaDB, créez une nouvelle base de données puis vérifiez /mnt/mysql-data :

mysql -u root -p -e "CREATE DATABASE tecmint;"

Toutes nos félicitations! Vous avez modifié avec succès le répertoire de données pour MySQL ou MariaDB.

Résumé

Dans cet article, nous avons expliqué comment modifier le répertoire de données sur un serveur MySQL ou MariaDB fonctionnant sur les distributions CentOS/RHEL 7 et Ubuntu/Debian.

Avez-vous des questions ou des commentaires sur cet article? N’hésitez pas à nous le faire savoir en utilisant le formulaire ci-dessous – nous sommes toujours heureux d’avoir de vos nouvelles !