Installer et Sécuriser MariaDB
Ce guide vous explique comment installer et configurer de manière sécurisée MariaDB sur votre VPS.
Prérequis
- Accès SSH root ou sudo
- Système Debian/Ubuntu à jour
Installation
-
Installer MariaDB :
sudo apt updatesudo apt install mariadb-server -
Sécuriser l'installation :
sudo mysql_secure_installationSuivez les étapes de sécurisation :
- Appuyez sur Entrée pour le mot de passe root (vide par défaut)
- Répondez aux questions de sécurité :
- Change the root password? [Y/n] :
Y(recommandé) - Remove anonymous users? [Y/n] :
Y - Disallow root login remotely? [Y/n] :
Y - Remove test database? [Y/n] :
Y - Reload privilege tables? [Y/n] :
Y
- Change the root password? [Y/n] :
Configuration d'un utilisateur
-
Connectez-vous à MariaDB :
sudo mysql -
Créez un nouvel utilisateur administrateur (remplacez 'votre_user' et 'votre_password') :
CREATE USER 'votre_user'@'localhost' IDENTIFIED BY 'votre_password';GRANT ALL PRIVILEGES ON *.* TO 'votre_user'@'localhost' WITH GRANT OPTION;FLUSH PRIVILEGES;EXIT;
Vérification de l'installation
-
Testez la connexion avec le nouvel utilisateur :
mysql -u votre_user -p -
Vérifiez le statut du service :
sudo systemctl status mariadb
Sécurisation du port MariaDB
-
Vérifiez le port d'écoute actuel :
sudo netstat -tlnp | grep mysql -
Configurez le pare-feu (UFW) :
# Bloquer l'accès par défaut au port MySQL (3306)sudo ufw deny 3306# Si vous avez besoin d'autoriser un accès distant depuis une IP spécifiquesudo ufw allow from IP_AUTORISÉE to any port 3306 -
Modifiez le fichier de configuration MariaDB :
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnfTrouvez et modifiez ces lignes :
# Limiter l'écoute à localhost uniquementbind-address = 127.0.0.1# Ou spécifiez une adresse IP précise# bind-address = VOTRE_IP_SERVEUR -
Redémarrez MariaDB pour appliquer les changements :
sudo systemctl restart mariadb -
Vérifiez les connexions autorisées :
mysql -u root -pSELECT user, host FROM mysql.user;
Administration graphique de la base de données
Une fois MariaDB installé, deux outils graphiques permettent de gérer vos bases sans passer par la ligne de commande :
- phpMyAdmin : interface web installée directement sur le serveur (avec Apache et PHP). Accessible depuis un navigateur, pratique pour l'administration quotidienne.
- MySQL Workbench : application de bureau installée sur votre poste. Elle se connecte au serveur via un tunnel SSH, sans ouvrir le port 3306 — cohérent avec la sécurisation vue plus haut.
phpMyAdmin (interface web via archive .tar.gz / .zip)
Cette méthode installe phpMyAdmin à partir de l'archive officielle (souvent plus récente que le paquet apt), servie par Apache.
-
Installez Apache, PHP et les extensions requises :
sudo apt updatesudo apt install apache2 php libapache2-mod-php php-mysqli php-mbstring php-zip php-gd php-curl php-xml -
Téléchargez et extrayez l'archive officielle. Au moment de la rédaction, la dernière version stable est phpMyAdmin 5.2.3.
Option A — archive .tar.gz :
cd /tmpwget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.tar.gztar xzf phpMyAdmin-5.2.3-all-languages.tar.gzsudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadminOption B — archive .zip :
cd /tmpsudo apt install unzipwget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.zipunzip phpMyAdmin-5.2.3-all-languages.zipsudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadminVérifier la dernière versionConsultez la page de téléchargement officielle pour récupérer la version la plus récente et adaptez le numéro dans les commandes.
-
Créez le dossier temporaire et ajustez les droits :
sudo mkdir -p /usr/share/phpmyadmin/tmpsudo chown -R www-data:www-data /usr/share/phpmyadminsudo chmod 755 /usr/share/phpmyadmin/tmp -
Créez le fichier de configuration à partir de l'exemple fourni :
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.phpGénérez une chaîne secrète (32 caractères) pour le chiffrement des cookies :
openssl rand -base64 24Éditez le fichier de configuration :
sudo nano /usr/share/phpmyadmin/config.inc.phpRenseignez la chaîne secrète et le dossier temporaire :
$cfg['blowfish_secret'] = 'COLLEZ_ICI_LA_CHAINE_GENEREE';$cfg['TempDir'] = '/usr/share/phpmyadmin/tmp'; -
Déclarez phpMyAdmin dans Apache :
sudo nano /etc/apache2/conf-available/phpmyadmin.confAjoutez le contenu suivant :
Alias /phpmyadmin /usr/share/phpmyadmin<Directory /usr/share/phpmyadmin>Options SymLinksIfOwnerMatchDirectoryIndex index.phpRequire all granted</Directory># Interdire l'accès web aux dossiers sensibles<Directory /usr/share/phpmyadmin/tmp>Require all denied</Directory> -
Activez la configuration et rechargez Apache :
sudo a2enconf phpmyadminsudo systemctl reload apache2 -
Accédez à l'interface depuis un navigateur, puis connectez-vous avec l'utilisateur MariaDB créé précédemment :
http://adresse_ip_ou_domaine/phpmyadmin
phpMyAdmin est une cible fréquente d'attaques automatisées. Il est fortement recommandé de :
- activer HTTPS (voir le conseil ci-dessous) ;
- restreindre l'accès par IP ou ajouter une authentification Apache (
.htaccess) ; - éventuellement remplacer l'alias
/phpmyadminpar un chemin moins prévisible.
En production, protégez l'accès avec un certificat SSL Let's Encrypt :
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d votre-domaine.fr
Un certificat nécessite un nom de domaine pointant vers l'IP de votre serveur — voir notre guide pour créer un enregistrement A.
MySQL Workbench (client de bureau via tunnel SSH)
MySQL Workbench s'installe sur votre ordinateur (Windows, macOS ou Linux) et se connecte au serveur via un tunnel SSH. Le port 3306 reste fermé sur le serveur et MariaDB continue d'écouter uniquement sur 127.0.0.1 : la connexion transite par SSH, comme si vous étiez en local sur le serveur.
-
Téléchargez et installez MySQL Workbench depuis le site officiel sur votre poste.
-
Dans Workbench, créez une nouvelle connexion (Database ▸ Manage Connections ▸ New) avec la méthode Standard TCP/IP over SSH et renseignez :
Champ Valeur SSH Hostname adresse_ip_serveur:22(ou votre port SSH)SSH Username votre utilisateur SSH SSH Key File / Password votre clé SSH ou mot de passe MySQL Hostname 127.0.0.1MySQL Server Port 3306Username l'utilisateur MariaDB (ex. votre_user)Password le mot de passe de cet utilisateur Pourquoi 127.0.0.1 ?Les champs MySQL Hostname/Port sont évalués depuis le serveur, à l'autre bout du tunnel SSH. On indique donc
127.0.0.1:3306, c'est-à-dire MariaDB en écoute locale sur le serveur. -
Cliquez sur Test Connection pour valider, puis OK pour enregistrer la connexion.
Vous pouvez aussi ouvrir le tunnel vous-même, puis pointer n'importe quel client MySQL sur 127.0.0.1:3307 en local :
ssh -L 3307:127.0.0.1:3306 utilisateur@adresse_ip_serveur
Tant que la session SSH reste ouverte, le port local 3307 est relié au port 3306 du serveur.
MySQL Workbench est développé pour MySQL. Avec les versions récentes de MariaDB, un avertissement de version « non prise en charge » peut apparaître : la plupart des opérations courantes (parcourir les données, exécuter du SQL, gérer les utilisateurs) fonctionnent néanmoins.
Bonnes pratiques de sécurité
- Utilisez des mots de passe forts
- Limitez les accès aux bases de données
- Effectuez des sauvegardes régulières
- Mettez à jour régulièrement MariaDB
- Limitez les connexions aux IPs de confiance
- Surveillez régulièrement les tentatives de connexion
En cas de problème
- Consultez les logs :
sudo tail -f /var/log/mysql/error.log - Vérifiez que le service est actif :
sudo systemctl status mariadb - Assurez-vous que les ports sont ouverts :
sudo netstat -tulpn | grep mysql