MariaDB

De ArchwikiFR


MariaDB est un système de gestion de base de données distribué sous licence GPLv2. Il s'agit ni plus ni moins d'un fork de MySQL initié par le créateur même de MySQL, Michael "Monty" Widenius, suite au rachat des technologies de Sun Microsystems par Oracle.

Ce système se veut performant et totalement compatible avec MySQL qu'il remplace désormais sous Arch:

  • les corrections de bugs critiques de MySQL s'appliquent à MariaDB ;
  • équivalence des bibliothèques et correspondance exacte à l'API et aux commandes de MySQL.

Installation

Installer MariaDB depuis les dépôts:

pacman -S mariadb

À la suite de quoi, les tables devraient être mises en place automatiquement. Si ce n'est pas le cas, réinstallez-les:

/usr/bin/mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql

Démarrer le service pour la session en cours:

systemctl start mysqld

L'établir au démarrage de votre système:

systemctl enable mysqld

Passer de Oracle MySQL à MariaDB

Si MySQL est installé sur votre machine, pacman demandera à désinstaller mysql, mysql-clients et libmysqlclient.

Note : Il peut être nécessaire de supprimer les fichiers suivants depuis /var/lib/mysql/ : ib_logfile0, ib_logfile1 et aria_log_control avant de redémarrer le service dans la procédure suivante.

Les étapes suivantes vous permettront de réaliser la transition de votre base MySQL vers votre base MariaDB:

#arrêt du serveur MySQL
systemctl stop mysqld
#remplacement de MySQL par MariaDB
pacman -S mariadb libmariadbclient mariadb-clients
#démarrage de mariadb (pas d'erreur, oui le service s'appelle mysqld ^^)
systemctl start mysqld
#mise à jour de vos tables (le mot de passe est celui de votre base de données)
mysql_upgrade -p

Configuration

Il est fortement recommandé de sécuriser l'installation après le démarrage du service, à l'aide de l'outil fourni:

mysql_secure_installation

De là vous pouvez vous connecter au serveur avec ce compte:

mysql -u root -p

Ajouter un utilisateur

Cela requiert deux étapes:

  • créer l'utilisateur
  • accorder les droits pour cet utilisateur sur telle ou telle base

Dans l'exemple ci-dessous, l'utilisateur monty identifié par le mot de passe some_pass se voit accorder tous les droits sur la base de données mydb:

MariaDB [(none)]> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON mydb.* TO 'monty'@'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> quit

Fichiers de configuration

Les options sont lus depuis les fichiers suivants (par ordre de préférence et selon la portée voulue, cf. documentation officielle (en)):

  • /etc/mysql/my.cnf
  • ~/.my.cnf
Attention : Depuis mariadb 10.3.12, /etc/mysql/my.cnf charge également les fichiers de configuration depuis le répertoire /etc/mysql/my.cnf.d/, ce qui permet de répartir les options de manière plus lisible (client/serveur, etc.).

Maintenance

Après montée de version de mariadb

Après une mise à jour majeure de mariadb, il est recommandé de mettre à jour les bases de données (pacman vous l'indiquera certainement):

mysql_upgrade -u root -p

Vérifier, réparer et optimiser les bases

L'utilitaire mysqlcheck, livré avec mariadb permet ces différentes opérations. Voir son manuel pour plus d'informations.

Pour vérifier l'ensemble des tables des bases de données:

mysqlcheck --all-databases -u root -p -c

Pour analyser l'ensemble des tables des bases de données:

mysqlcheck --all-databases -u root -p -a

Pour réparer l'ensemble des tables des bases de données:

mysqlcheck --all-databases -u root -p -r

Pour optimiser l'ensemble des tables des bases de données:

mysqlcheck --all-databases -u root -p -o

Sauvegarde

Il existe différents moyens de sauvegarder la base de données. L'un d'eux, sans compression est :

$ mysqldump --single-transaction --flush-logs --master-data=2 --all-databases -u root -p > toutes_mes_db.sql

Ou avec compression :

$ mysqldump --single-transaction --flush-logs --master-data=2 --all-databases -u root -p | gzip > toutes_mes_db.sql.gz


Pour le reste, les observations liées à MySQL ainsi que son utilisation et, bien sûr son manuel, sont donc parfaitement compatibles et valables. :-)