Dans la configuration par défaut, le serveur de bases de données MariaDB permet les connexions sur l’hôte local. Actuellement j’ai une demande un peu particulière d’un de mes clients. Le cahier des charges stipule un serveur MariaDB qui tourne dans une VM sous Linux, et accessible dans le réseau local depuis un client Windows.
Pour tester cette configuration, j’ai un réseau de machines virtuelles sur ma station de travail, que je pilote avec Vagrant et KVM :
- Le serveur MariaDB est installé sur
host-01.sandbox.lan
(10.23.45.10
). - Le client MariaDB doit se connecter depuis
host-02.sandbox.lan
(10.23.45.20
). - Le client non privilégié
myreportuser
est censé se connecter à la basemyreport
.
Configurer le pare-feu
La pare-feu du serveur est géré par FirewallD. Les connexions à MySQL et son fork libre MariaDB se font sur le port 3306. À la limite, ce n’est même pas la peine de mémoriser ce port, puisque FirewallD comporte une configuration explicite pour le service :
# firewall-cmd --permanent --add-service=mysql
success
# firewall-cmd --reload
success
# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0 eth1
sources:
services: mysql ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Reconfigurer MariaDB
Dans sa configuration actuelle, MariaDB autorise les seules connexions sur la boucle locale (localhost
). Pour accepter les connexions sur d’autres interfaces réseau, il faut éditer le fichier /etc/my.cnf.d/mariadb-server.cnf
et décommenter la directive bind-address
comme ceci :
bind-address=0.0.0.0
Redémarrer le service pour prendre en compte les modifications :
# systemctl restart mariadb
Créer l’utilisateur MariaDB
Sur mon serveur, je dispose d’une base de données myreport
:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| myreport |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.000 sec)
Je crée un utilisateur non privilégié myreportuser
qui est censé se connecter depuis l’hôte host-02.sandbox.lan
à cette base. Attention, le mot de passe défini apparaîtra en clair dans le moniteur MariaDB lors de la saisie :
MariaDB [(none)]> grant all on myreport.* -> to 'myreportuser'@'host-02.sandbox.lan' -> identified by '**********'; Query OK, 0 rows affected (0.001 sec)
Notez la syntaxe un peu spéciale avec les apostrophes qui entourent aussi bien la partie utilisateur myreportuser
que la partie hôte host-02.sandbox.lan
. Le moniteur MariaDB vous renvoie une erreur si vous ne les utilisez pas.
Voici les deux utilisateurs définis sur le serveur :
MariaDB [(none)]> use mysql; ... Database changed MariaDB [mysql]> select user, host, password from user; +--------------+---------------------+-------------------------------------------+ | user | host | password | +--------------+---------------------+-------------------------------------------+ | root | localhost | *F424CF5D03C9AAE965E86FBF001AAB078229EDEB | | myreportuser | host-02.sandbox.lan | *6883418C147A759B04D78A2D1E4E0C5BB0CDD1B4 | +--------------+---------------------+-------------------------------------------+ 2 rows in set (0.000 sec)
Connexion à distance
Sur mon poste client host-02.sandbox.lan
je vérifie si je dispose bien d’un client MariaDB :
$ rpm -q mariadb mariadb-10.3.35-1.module+el8.6.0+1005+cdf19c22.x86_64
Je me connecte à ma base sur host-01.sandbox.lan
:
$ mysql -u myreportuser -p -h host-01.sandbox.lan Enter password: ********** Welcome to the MariaDB monitor. ... MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | myreport | +--------------------+ 2 rows in set (0.001 sec)
Et le tour est joué.
Lire la suite : Sauvegarder et restaurer une base de données MariaDB
La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.
0 commentaire