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
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
Prêt.
Aucun commentaire pour l'instant