Image

Base de connaissances → Configuration de l'accès à distance à la base de données MariaDB

[Serveurs virtuels]
Date de publication: 17.10.2023

Par défaut, l'accès à distance au service de base de données MariaDB est désactivé pour des raisons de sécurité. Dans ce guide, nous examinerons la configuration de l'accès à distance à une base de données par adresse IP.

Supposons que nous ayons 2 serveurs, sur l'un il y a un certain système (site/crm), et sur l'autre nous stockerons une base de données et demanderons des données en spécifiant le login, le mot de passe et l'adresse IP du serveur.

1. Préparation à la configuration

1.1 Vérifions le fichier de configuration

Assurons-nous que l'option de connexion n'est pas commentée et ressemble à ceci :

nano /etc/mysql/mariadb.conf.d/50-server.cnf

...
bind-address = 0.0.0.0
...

Pour appliquer les paramètres, redémarrez le service

systemctl restart mariadb

1.2 Vérifier la disponibilité des ports

netstat -ant | grep 3306

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN

2. Configuration

mysql -u root -p

2.1 Créer une base de données et un utilisateur

CREATE DATABASE base1;
CREATE USER  'user1'@'localhost' IDENTIFIED BY 'password';

2.2 Autorisons la connexion en spécifiant l'IP du serveur à partir duquel nous allons nous connecter

GRANT ALL ON base1.* to 'user1'@'xx.ip.xx.ip' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;

Ces détails peuvent être utilisés pour connecter :

  • base1 - Base de données.
  • user1 - Utilisateur.
  • password - Mot de passe.
  • xx.ip.xx.ip - Adresse IP du serveur à partir duquel nous nous connecterons.

2.3 Autres exemples

2.3.1 Autoriser l'accès à toutes les bases de données à partir de l'adresse IP spécifiée

GRANT ALL ON *.* to 'user1'@'xx.ip.xx.ip' IDENTIFIED BY 'password' WITH GRANT OPTION;

2.3.2 Autoriser les connexions de n'importe quelle adresse IP à base1

GRANT ALL ON base1.* to 'user1'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

2.3.3 Autoriser les connexions uniquement à partir d'un sous-réseau spécifique vers base1

GRANT ALL ON base1.* to 'user1'@'xx.ip.xx.%' IDENTIFIED BY 'password' WITH GRANT OPTION;

3. Mise en place d'un pare-feu iptables

3.1 Autorisons uniquement une adresse IP spécifique

iptables -A INPUT -p tcp -s xx.ip.xx.ip --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

3.2 Autorisons toutes les ips

iptables -A INPUT -p tcp -m tcp --dport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

3.3 Autoriser un sous-réseau spécifique

iptables -A INPUT -p tcp -s xx.ip.xx.0/24 --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 3306 -m conntrack --ctstate ESTABLISHED -j ACCEPT

4. Vérifions la connexion depuis le serveur 1

4.1 Installer le client mariadb

apt install mariadb-client

4.2 Connexion à un serveur configuré

mysql -u wpuser -h ip.xx.ip.xx -p

Enter password:

MariaDB [(none)]> show databases;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| base1              |
+--------------------+
2 rows in set (0.10 sec)

Prêt.





Aucun commentaire pour l'instant