Red Hat, Alma Linux : Installer et configurer un serveur de base de données MariaDB (8 et 9)
Table des matières
Dans cet article, nous allons voir comment mettre en place un serveur de base de données MariaDB sur RedHat Enterprise Linux 8 ou 9 (la procédure est identique.
Les manipulations proposées sont valides pour les dérivées de RHEL telles qu'Alma Linux, Rocky Linux ou Oracle Linux.
Dans EL 8, par défaut, MariaDB est proposé en version 10.3
Dans EL 9, par défaut, MariaDB est proposé en version 10.5
Il est possible, sur EL 8 d'utiliser MariaDB 10.5.
Pour EL 8 :
Listez les modules MariaDB disponibles :
Désactivez le module 10.3 :
Activez le module 10.5 :
On va installer les 2 paquets qui vont nour fournir le serveur de base de données et les clients en ligne de commande :
Il reste maintenant à activer et démarrer le service mariadb :
On initialise le moteur de base de données :
Sur les versions récentes de MariaDB (10.5) il est proposé d'utiliser le unix_socket. On répondra non pour utiliser des utilisateurs MariaDB et non Linux :
On va pouvoir ainsi définir le mot de passe root (qui est différent du root du système) :
On siupprime les utilisateurs anonymes par sécurité :
On désactive la connexion à distance en tant que root :
On supprime les bases de test :
On peut tester la connexion :
Pour vérifier le bon fonctionnement, on pourra lister les utilisateurs par exemple :
Le fichier de configuration de MariaDB est /etc/my.cnf et certaines sections sont présentes dans /etc/my.cnf.d/
Dans le cas d'un serveur MySQL mutualisé, les applications ne seront pas sur le serveur de base de données.
Dans un premier temps, on va autoriser dans le pare-feu le protocole mysql (port 3306) (ici si la zone de l'interface est public) et on recharge ce dernier :
On va également paramétrer le service MariaDB afin qu'il écoute sur toutes les adresses.
On va modifier le fichier /etc/my.cnf.d/mariadb-server.cnf et décommenter bind-address :
On redémarre ensuite le service :
Ensuite, il nous reste à créer des utilisateurs qui pourront se connecter à distance.
Voici un exemple de commande CREATE USER avec l'utilisateur "adrien" depuis "192.168.21.200" :
Vous pouvez remplacer l'adresse IP par :
- Un nom de domaine
- Une information avec jocker, le % étant le symbole jocker ( 192.168.%.% = toutes les adresses IP commençant par 192.168 )
Pour donner des droits sur une base de données, c'est la commande GRANT, exemple ici avec les pleins droits sur la base baseadrien pour l'utilisateur adrien précédemment créé :
Testons les accès, depuis la machine cliente concernée sur le serveur précédemment installé (exemple 192.168.221.53) :
Avec la commande SHOW DATABASES, on constate qu'on voit bien les bases auxquelles on a accès :
Plus d'informations sur la configuration de MariaDB ici : https://www.linuxtricks.fr/wiki/mysql-configuration-et-securisation
Un guide des commandes de base est disponible ici : https://www.linuxtricks.fr/wiki/sql-guide-des-commandes-de-base
Introduction
Dans cet article, nous allons voir comment mettre en place un serveur de base de données MariaDB sur RedHat Enterprise Linux 8 ou 9 (la procédure est identique.
Les manipulations proposées sont valides pour les dérivées de RHEL telles qu'Alma Linux, Rocky Linux ou Oracle Linux.
Sélection de la version souhaitée via les modules
Dans EL 8, par défaut, MariaDB est proposé en version 10.3
Dans EL 9, par défaut, MariaDB est proposé en version 10.5
Il est possible, sur EL 8 d'utiliser MariaDB 10.5.
Pour EL 8 :
Listez les modules MariaDB disponibles :
Code BASH :
dnf module list mariadb
Code TEXT :
Name Stream Profiles Summary mariadb 10.3 [d] client, galera, server [d] MariaDB Module mariadb 10.5 client, galera, server [d] MariaDB Module Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Désactivez le module 10.3 :
Code BASH :
dnf module disable mariadb:10.3
Activez le module 10.5 :
Code BASH :
dnf module enable mariadb:10.5
Installation des prérequis
On va installer les 2 paquets qui vont nour fournir le serveur de base de données et les clients en ligne de commande :
Code BASH :
dnf install mariadb-server mariadb
Configuration des services
Il reste maintenant à activer et démarrer le service mariadb :
Code BASH :
systemctl enable --now mariadb.service
Initialisation du moteur de base de données
On initialise le moteur de base de données :
Code BASH :
mysql_secure_installation
Sur les versions récentes de MariaDB (10.5) il est proposé d'utiliser le unix_socket. On répondra non pour utiliser des utilisateurs MariaDB et non Linux :
Code TEXT :
Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n
On va pouvoir ainsi définir le mot de passe root (qui est différent du root du système) :
Code TEXT :
Enter current password for root (enter for none): OK, successfully used password, moving on... Set root password? [Y/n] Y New password: Re-enter new password: Password updated successfully!
On siupprime les utilisateurs anonymes par sécurité :
Code TEXT :
Remove anonymous users? [Y/n] ... Success!
On désactive la connexion à distance en tant que root :
Code BASH :
Disallow root login remotely? [Y/n] ... Success!
On supprime les bases de test :
Code TEXT :
Remove test database and access to it? [Y/n] - Dropping test database... ... Success! - Removing privileges on test database... ... Success!
On peut tester la connexion :
Code BASH :
mysql -u root -p
Pour vérifier le bon fonctionnement, on pourra lister les utilisateurs par exemple :
Code SQL :
SELECT USER, host, password FROM mysql.USER;
Fichier de configuration my.cnf
Le fichier de configuration de MariaDB est /etc/my.cnf et certaines sections sont présentes dans /etc/my.cnf.d/
Configurer un accès distant
Dans le cas d'un serveur MySQL mutualisé, les applications ne seront pas sur le serveur de base de données.
Dans un premier temps, on va autoriser dans le pare-feu le protocole mysql (port 3306) (ici si la zone de l'interface est public) et on recharge ce dernier :
Code BASH :
firewall-cmd --permanent --zone=public --add-service=mysql firewall-cmd --reload
On va également paramétrer le service MariaDB afin qu'il écoute sur toutes les adresses.
On va modifier le fichier /etc/my.cnf.d/mariadb-server.cnf et décommenter bind-address :
Code BASH :
vi /etc/my.cnf.d/mariadb-server.cnf
Code TEXT :
bind-address=0.0.0.0
On redémarre ensuite le service :
Code BASH :
systemctl restart mariadb
Ensuite, il nous reste à créer des utilisateurs qui pourront se connecter à distance.
Voici un exemple de commande CREATE USER avec l'utilisateur "adrien" depuis "192.168.21.200" :
Code SQL :
CREATE USER 'adrien'@'192.168.21.200' IDENTIFIED BY 'MotDePasse';
Vous pouvez remplacer l'adresse IP par :
- Un nom de domaine
- Une information avec jocker, le % étant le symbole jocker ( 192.168.%.% = toutes les adresses IP commençant par 192.168 )
Pour donner des droits sur une base de données, c'est la commande GRANT, exemple ici avec les pleins droits sur la base baseadrien pour l'utilisateur adrien précédemment créé :
Code SQL :
GRANT ALL ON baseadrien.* TO 'adrien'@'192.168.21.200';
Testons les accès, depuis la machine cliente concernée sur le serveur précédemment installé (exemple 192.168.221.53) :
Code BASH :
mysql -u adrien -p -h 192.168.221.53
Avec la commande SHOW DATABASES, on constate qu'on voit bien les bases auxquelles on a accès :
Code TEXT :
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | baseadrien | | information_schema | +--------------------+ 2 rows in set (0,001 sec)
Plus d'informations sur MySQL et MariaDB
Plus d'informations sur la configuration de MariaDB ici : https://www.linuxtricks.fr/wiki/mysql-configuration-et-securisation
Un guide des commandes de base est disponible ici : https://www.linuxtricks.fr/wiki/sql-guide-des-commandes-de-base