Beaucoup d’applications web que j’utilise au quotidien nécessitent une base de données sql. Ne voulant pas encombrer inutilement le serveur hôte avec des serveurs sql disséminés dans plusieurs containers, j’ai décidé de centraliser le serveur sql pour toutes mes applications web.

Configuration du serveur

Rien de compliqué, il suffit d’éditer le fichier

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

de chercher la ligne

bind-address = 127.0.0.1

de la remplacer par

bind-address = 192.168.0.125  #ip sur le réseau local du serveur

Un rédémarrage plus tard

sudo systemctl restart mariadb

notre serveur sql est ouvert à notre réseau local. Il ne reste plus qu’à créer un utilisateur accompagné de sa base de données afin de réaliser une tentative une connexion distante. Par la suite de commencer la migration de toutes mes bases de données disséminées sur mes containers.

CREATE DATABASE `mabase`; 
GRANT ALL PRIVILEGES ON `mabase`.* TO "monlogin"@"%" identified by 'monpass'; 
FLUSH PRIVILEGES;

Ne pas oublier le "%" sur la ligne "monlogin"@"%" ce paramètre défini que l’utilisateur peut se connecter depuis n’importe où. On peut restreindre encore cet accès en spéficiant une adresse du réseau local à la place du "%".

Essai de connexion

Depuis une autre machine sur le réseau j’installe le client mariadb

sudo apt install mariadb-client

Je tente de me connecter avec l’utilisateur "monlogin".

mysql -u monlogin -h 192.168.0.125 -p
image

Bingo ! cela fonctione, en même temps je n’en doutais pas une minute :) .

Conclusion

Désormais je peux me connecter depuis n’importe quel serveur sur mon réseau local, et ainsi centraliser toutes mes bases de données sur un seul serveur sql, contrairement au temps où j’avais un serveur sql pour chaque bases.