Red Hat et dérivées version SERVEUR

Red Hat, Alma Linux : Installer et configurer un serveur de base de données MariaDB (8 et 9)

Table des matières

logo-mariadb



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
Cette page a été vue 1409 fois