Aller au contenu principal

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

  1. Installer MariaDB :

    sudo apt update
    sudo apt install mariadb-server
  2. Sécuriser l'installation :

    sudo mysql_secure_installation

    Suivez 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

Configuration d'un utilisateur

  1. Connectez-vous à MariaDB :

    sudo mysql
  2. 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

  1. Testez la connexion avec le nouvel utilisateur :

    mysql -u votre_user -p
  2. Vérifiez le statut du service :

    sudo systemctl status mariadb

Sécurisation du port MariaDB

  1. Vérifiez le port d'écoute actuel :

    sudo netstat -tlnp | grep mysql
  2. 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écifique
    sudo ufw allow from IP_AUTORISÉE to any port 3306
  3. Modifiez le fichier de configuration MariaDB :

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

    Trouvez et modifiez ces lignes :

    # Limiter l'écoute à localhost uniquement
    bind-address = 127.0.0.1

    # Ou spécifiez une adresse IP précise
    # bind-address = VOTRE_IP_SERVEUR
  4. Redémarrez MariaDB pour appliquer les changements :

    sudo systemctl restart mariadb
  5. Vérifiez les connexions autorisées :

    mysql -u root -p
    SELECT 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.

  1. Installez Apache, PHP et les extensions requises :

    sudo apt update
    sudo apt install apache2 php libapache2-mod-php php-mysqli php-mbstring php-zip php-gd php-curl php-xml
  2. 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 /tmp
    wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.tar.gz
    tar xzf phpMyAdmin-5.2.3-all-languages.tar.gz
    sudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadmin

    Option B — archive .zip :

    cd /tmp
    sudo apt install unzip
    wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.zip
    unzip phpMyAdmin-5.2.3-all-languages.zip
    sudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadmin
    Vérifier la dernière version

    Consultez 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.

  3. Créez le dossier temporaire et ajustez les droits :

    sudo mkdir -p /usr/share/phpmyadmin/tmp
    sudo chown -R www-data:www-data /usr/share/phpmyadmin
    sudo chmod 755 /usr/share/phpmyadmin/tmp
  4. 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.php

    Gé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.php

    Renseignez la chaîne secrète et le dossier temporaire :

    $cfg['blowfish_secret'] = 'COLLEZ_ICI_LA_CHAINE_GENEREE';
    $cfg['TempDir'] = '/usr/share/phpmyadmin/tmp';
  5. Déclarez phpMyAdmin dans Apache :

    sudo nano /etc/apache2/conf-available/phpmyadmin.conf

    Ajoutez le contenu suivant :

    Alias /phpmyadmin /usr/share/phpmyadmin

    <Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    Require all granted
    </Directory>

    # Interdire l'accès web aux dossiers sensibles
    <Directory /usr/share/phpmyadmin/tmp>
    Require all denied
    </Directory>
  6. Activez la configuration et rechargez Apache :

    sudo a2enconf phpmyadmin
    sudo systemctl reload apache2
  7. Accédez à l'interface depuis un navigateur, puis connectez-vous avec l'utilisateur MariaDB créé précédemment :

    http://adresse_ip_ou_domaine/phpmyadmin
Sécuriser l'accès à 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 /phpmyadmin par un chemin moins prévisible.
Activer HTTPS

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.

  1. Téléchargez et installez MySQL Workbench depuis le site officiel sur votre poste.

  2. Dans Workbench, créez une nouvelle connexion (Database ▸ Manage Connections ▸ New) avec la méthode Standard TCP/IP over SSH et renseignez :

    ChampValeur
    SSH Hostnameadresse_ip_serveur:22 (ou votre port SSH)
    SSH Usernamevotre utilisateur SSH
    SSH Key File / Passwordvotre clé SSH ou mot de passe
    MySQL Hostname127.0.0.1
    MySQL Server Port3306
    Usernamel'utilisateur MariaDB (ex. votre_user)
    Passwordle 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.

  3. Cliquez sur Test Connection pour valider, puis OK pour enregistrer la connexion.

Alternative — tunnel SSH manuel

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.

Compatibilité MariaDB

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