MariaDB

MariaDB est un système de gestion de base de données relationnelle (SGBDR) constitue une solution de remplacement compatible avec la technologie très répandue des bases de données MySQL. MariaDB est donc un fork communautaire de MySQL et il présente l'avantage d'être open source et sous licence GPL, à la différence de MySQL qui est un logiciel propriétaire de chez Oracle, mais qui reste gratuit malgré tout.

1. Installation

Nous installons MariaDB sous Debian 11 en tant qu'administrateur par la commande suivante :

# apt-get install -y mariadb-server


Nous pouvons afficher la version de MariaDB installé par :

# mariadb -V

ou par la consultation du gestionnaire de paquets Aptitude :

# apt policy mariadb-server


MariaDB dispose de l’utilitaire mysql_secure_installation pour assurer la sécurité d’une installation fraîche sur une machine de production. Ce programme permet d’effectuer quelques démarches de sécurisation essentielles :

  • Définir un mot de passe root MySQL
  • Supprimer les comptes root MySQL accessibles de l’extérieur
  • Supprimer les connexions anonymes
  • Supprimer la base de données de test

Nous lançons le script de sécurisation :

# mysql_secure_installation


Après avoir défini un mot de passe pour l'administrateur “root” de MariaDB et configuré les paramètres de configuration de sécurité souhaité, nous pouvons se connecter au moniteur de MariaDB avec le mot de passe “root” défini dans l'étape suivante :

# mariadb -u root -p

-u spécifie le nom d'utilisateur
-p spécifie que nous utilisons un mot de passe

Nous pouvons lister les bases de données :

show databases;


Nous pouvons lister les utilisateurs :

select user from mysql.user;
select user, host, password , plugin FROM mysql.user;

Utilisateurs

Vous pouvez lister les utilisateurs ainsi que leurs méthodes d'authentification avec la requête suivante :

SELECT user, host, plugin, password FROM mysql.user;


Pour créer un utilisateur MySQL identifié au moyen d'un mot de passe :

CREATE USER 'nom_utilisateur_choisi'@'localhost' IDENTIFIED BY 'mot_de_passe_solide';


Pour créer un accès MySQL à un utilisateur Ubuntu :

CREATE USER 'nom_utilisateur'@'localhost' IDENTIFIED WITH unix_socket;


Modifier l'accès d'un utilisateur Pour modifier l'accès d'un utilisateur MySQL existant, et l'identifier par mot de passe :

ALTER USER 'nom_utilisateur'@'localhost' IDENTIFIED BY 'mot_de_passe_solide';
FLUSH PRIVILEGES;


Pour lier un compte MySQL existant à un utilisateur Ubuntu (il faut que les noms d'utilisateur soient les mêmes) :

ALTER USER 'nom_utilisateur'@'localhost' IDENTIFIED WITH unix_socket;
FLUSH PRIVILEGES;


Pour supprimer un utilisateur :

DROP USER 'nom_utilisateur'@'localhost';


Privilèges

Donner tous les droits sur une base de données à un utilisateur précis :

GRANT ALL ON nom_base.* TO 'nom_utilisateur'@'localhost';

Puis rechargez les privilèges.

Donner tous les droits à un super-administrateur :

GRANT ALL ON *.* TO 'nom_utilisateur'@'localhost';

Puis rechargez les privilèges.

Supprimer les droits sur une base de données à un utilisateur précis :

REVOKE ALL ON nom_base.* FROM 'nom_utilisateur'@'localhost';

Puis rechargez les privilèges.

Recharger les privilèges Après chacune de ces opérations il est nécessaire de recharger les privilèges des utilisateurs MySQL :

FLUSH PRIVILEGES;

Base de donnée

Utiliser une base de données existante :

USE nom_de_la_base;


Créer une base de données : CREATE DATABASE nom_de_la_base; Liste des bases de données SHOW DATABASES; Supprimer une base de données DROP DATABASE nom_de_la_base; Importer une base de données située dans le répertoire courant (base de donnée exportée en .sql) SOURCE fichier.sql; Créer une base de données et un utilisateur qui lui est associé Cette procédure est la plus courante, c'est celle qu'on réalise lorsqu'on installe une application web en production. Pour des raisons de sécurité chaque application doit se connecter avec un utilisateur MySQL qui lui est dédié, et qui n'a accès qu'à la base correspondante.

CREATE DATABASE application; CREATE USER 'utilisateur'@'localhost' IDENTIFIED BY 'mot_de_passe'; GRANT ALL ON application.* TO 'utilisateur'@'localhost'; FLUSH PRIVILEGES; QUIT; Il faut remplacer dans ces requêtes application par le nom de l'application web ou du site internet (sans espace ni caractère spécial) , utilisateur par un nom d'utilisateur (qui peut aussi être celui de l'application, pour s'y retrouver facilement) et mot_de_passe par un vrai mot de passe complexe qu'on note : on devra renseigner ces identifiants lors de l'installation de l'application.

On vient de créer la base de donnée application à laquelle l'utilisateur utilisateur aura accès.

Tables

Liste des tables de la base de données active SHOW TABLES; Structure d'une table DESCRIBE nom_table; Renommer une table ALTER TABLE nom_table RENAME AS nouveau_nom;

Sauvegarde et importation

Ajoutez -p à ces commandes si vous utilisez un mot de passe pour le compte root : Pour exporter la base de donnée « maBase », utilisez la commande :

sudo mysqldump maBase > maBase_backup.sql Ceci fera l'export dans un fichier « maBase_backup.sql ».

Pour exporter une table (par exemple ma_table )appartenant à une base des données (par exemple maBase) :

sudo mysqldump maBase ma_table > ma_table.sql Ainsi nous aurons une exportation seulement de la table ma_table sans toucher à d'autres tables de la base des données

Pour importer une base de données ou une sauvegarde sur « maBase », utilisez la commande :

sudo mysql maBase < maBase_backup.sql

Si vous souhaitez mettre en place une solution de sauvegarde automatique de bases de données à intervalle régulier, rendez-vous sur la page de documentation de AutoMySQLBackup


MySQL avec Qt5 : Installer la bibliothèque Qt5 pour mysql afin de l'utiliser sous Qt : sudo apt install libqt5sql5-mysql

Il est possible d'administrer un serveur MySQL via une interface graphique avec par exemple phpMyAdmin ou Adminer qui sont d'excellentes applications web. D'autres outils sont disponibles, vous en trouverez une liste non exhaustive sur la page Outils MySQL.