MySQL sur VPSVPS Linux··8 min de lecture·Par l'équipe OmegaCloud

Comment installer et configurer MySQL sur un VPS Linux

Illustration de l'article OmegaCloud : MySQL sur VPS

Installer et configurer MySQL sur VPS est une étape incontournable pour tout projet web, application métier ou service SaaS nécessitant une base de données relationnelle robuste. MySQL reste le SGBD open-source le plus déployé en production, grâce à sa fiabilité, ses performances et son écosystème mature. Ce guide technique 2026 vous accompagne dans l'installation sécurisée de MySQL sur un VPS Linux, la configuration optimisée pour la production, et les bonnes pratiques d'administration quotidienne.



Pourquoi installer MySQL sur VPS plutôt qu'en mutualisé

Un VPS Linux OmegaCloud offre un contrôle total sur le serveur MySQL : vous choisissez la version (MySQL Community 8.0, 8.3, ou MariaDB 10.11), le moteur de stockage (InnoDB, MyRocks), les paramètres mémoire, et les règles réseau. Contrairement à un hébergement mutualisé où les ressources sont partagées, un VPS garantit des CPU dédiés et de la RAM isolée, éliminant les phénomènes de « noisy neighbor » qui ralentissent les requêtes complexes.

Les avantages concrets d'un VPS pour MySQL :

  • Accès root SSH : modification directe de /etc/mysql/my.cnf, gestion fine des utilisateurs MySQL, import/export de bases volumineuses sans limite d'upload.
  • Stockage NVMe : latence sub-ms pour les écritures InnoDB, idéal pour les transactions concurrentes (e-commerce, CRM, ERP).
  • Performances prévisibles : vCPU dédiés, pas de throttling, monitoring temps réel CPU/RAM/IOPS via le panel OmegaCloud.
  • Sécurité réseau : firewall ufw/nftables, port 3306 exposé uniquement aux IP autorisées, anti-DDoS volumétrique transparent au niveau datacenter.
  • Snapshots : sauvegarde instantanée du volume avant montée de version MySQL ou migration de schéma.

Pour un projet web (WordPress, PrestaShop, Laravel, Symfony), un VPS 2 vCPU / 4 GB RAM suffit pour 10 000 à 50 000 requêtes SQL/jour. Pour une charge OLTP soutenue ou des analytics en temps réel, privilégiez 4 vCPU / 8 GB RAM avec stockage NVMe Gen4.


Salle serveur datacenter européen avec rangées de baies NVMe éclairées en violet et bleu, câbles fibre optique organisés, éclairage tamisé, ambiance professionnelle


Installer MySQL sur VPS Debian / Ubuntu : procédure pas-à-pas

Cette procédure couvre l'installation de MySQL 8.0 Community sur Debian 12 ou Ubuntu 22.04 LTS. Les commandes sont identiques pour Rocky Linux / AlmaLinux, remplacez simplement apt par dnf.

Étape 1 : Mise à jour système et installation du paquet MySQL

sudo apt update && sudo apt upgrade -y
sudo apt install mysql-server -y

Le paquet mysql-server installe MySQL Community depuis les dépôts officiels Debian/Ubuntu. Pour une version spécifique (8.3) ou MariaDB, ajoutez le dépôt MySQL APT ou MariaDB Repository.

Étape 2 : Vérification du service MySQL

sudo systemctl status mysql
sudo systemctl enable mysql

Le service mysql.service doit être active (running). L'option enable garantit le démarrage automatique au boot du VPS.

Étape 3 : Sécurisation initiale avec mysql_secure_installation

sudo mysql_secure_installation

Ce script interactif configure :

  • VALIDATE PASSWORD plugin : force des mots de passe MySQL robustes (longueur ≥ 12, majuscules, chiffres, symboles).
  • Suppression des comptes anonymes : par défaut, MySQL autorise les connexions locales sans authentification.
  • Interdiction du root distant : le compte root@localhost ne peut se connecter que depuis le VPS.
  • Suppression de la base test : base de données de démo inutile en production.

Répondez « Y » à toutes les questions pour une configuration sécurisée. Notez le mot de passe root MySQL dans un gestionnaire de secrets (pass, KeePass, Bitwarden).

Étape 4 : Créer un utilisateur MySQL applicatif

Ne connectez jamais une application web avec le compte root MySQL. Créez un utilisateur dédié avec privilèges limités :

sudo mysql -u root -p
CREATE DATABASE prod_app CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Mot_De_Passe_Robuste_2026!';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, INDEX, ALTER ON prod_app.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Le plugin caching_sha2_password (par défaut MySQL 8.0+) offre une sécurité renforcée par rapport à mysql_native_password. Pour une connexion distante (depuis un serveur applicatif séparé), remplacez 'app_user'@'localhost' par 'app_user'@'IP_SERVEUR_APP' et configurez le firewall.


Terminal Linux avec lignes de commande MySQL en couleur verte sur fond noir, affichant CREATE USER et GRANT, clavier mécanique en arrière-plan flou, éclairage teal subtil


Configurer MySQL sur VPS pour la production : my.cnf optimisé

Le fichier /etc/mysql/my.cnf (ou /etc/my.cnf sur Rocky/Alma) centralise tous les paramètres MySQL. Voici une configuration optimisée pour un VPS 4 vCPU / 8 GB RAM avec charge OLTP modérée (10-50 requêtes concurrentes).

Paramètres mémoire InnoDB

[mysqld]
# Mémoire allouée au buffer pool InnoDB (50-70 % RAM totale)
innodb_buffer_pool_size = 5G

# Instances InnoDB pour multi-threading (1 par GB de buffer_pool_size)
innodb_buffer_pool_instances = 5

# Taille du log InnoDB (1-2 GB recommandé pour writes intensifs)
innodb_log_file_size = 1G
innodb_log_buffer_size = 64M

# Flush method pour stockage NVMe (O_DIRECT évite double buffering)
innodb_flush_method = O_DIRECT

# Thread pool (MySQL Enterprise) ou max_connections (Community)
max_connections = 200

Justification : innodb_buffer_pool_size est le paramètre clé. Sur un VPS 8 GB RAM, allouez 5 GB à InnoDB, laissant 3 GB pour l'OS, les connexions MySQL, et les buffers temporaires. Le innodb_flush_method = O_DIRECT sur stockage NVMe élimine le cache OS, réduisant la latence d'écriture de 30-50 %.

Logs et monitoring

# Slow query log (requêtes > 1 seconde)
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 1

# Général query log (DEBUG uniquement, désactiver en prod)
general_log = 0

# Error log
log_error = /var/log/mysql/error.log

Le slow_query_log identifie les requêtes non indexées ou les JOINs mal optimisés. Analysez-le avec pt-query-digest (Percona Toolkit) :

sudo apt install percona-toolkit -y
pt-query-digest /var/log/mysql/slow.log | head -50

Sécurité réseau et bind-address

# Écoute uniquement sur localhost (applications en local)
bind-address = 127.0.0.1

# Écoute sur IP privée VPS (applications multi-serveurs)
# bind-address = 10.x.x.x

# Désactiver LOAD DATA LOCAL INFILE (faille d'upload arbitraire)
local_infile = 0

Par défaut, bind-address = 127.0.0.1 interdit toute connexion distante. Pour un cluster applicatif (serveur web + serveur MySQL séparés), configurez bind-address sur l'IP privée du VPS et restreignez le port 3306 avec ufw :

sudo ufw allow from IP_SERVEUR_WEB to any port 3306 proto tcp
sudo ufw enable

Pour un VPS exposé sur Internet, l'anti-DDoS transparent OmegaCloud bloque automatiquement les floods volumétriques au niveau réseau. Complétez avec fail2ban pour bloquer les tentatives d'authentification MySQL par brute-force :

sudo apt install fail2ban -y
sudo nano /etc/fail2ban/jail.local
[mysqld-auth]
enabled = true
port = 3306
logpath = /var/log/mysql/error.log
maxretry = 3
bantime = 3600
sudo systemctl restart fail2ban

Après modification de my.cnf, redémarrez MySQL :

sudo systemctl restart mysql


Administrer et monitorer MySQL sur VPS au quotidien

Sauvegardes automatisées avec mysqldump et snapshots VPS

Un plan de sauvegarde robuste combine dumps logiques (mysqldump) et snapshots volumes (niveau hyperviseur). Script cron pour dump quotidien :

sudo nano /usr/local/bin/backup_mysql.sh
#!/bin/bash
BACKUP_DIR="/backups/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR

mysqldump -u root -p'MOT_DE_PASSE_ROOT' --all-databases --single-transaction --routines --triggers > $BACKUP_DIR/all_databases_$DATE.sql

# Compression
gzip $BACKUP_DIR/all_databases_$DATE.sql

# Nettoyage dumps > 7 jours
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -delete
sudo chmod +x /usr/local/bin/backup_mysql.sh
sudo crontab -e
0 2 * * * /usr/local/bin/backup_mysql.sh

L'option --single-transaction garantit la cohérence des dumps InnoDB sans verrouiller les tables. Pour les bases > 50 GB, préférez mydumper (multi-threading) ou les snapshots LVM/VPS.

Le panel OmegaCloud permet de déclencher un snapshot manuel avant une opération critique (ALTER TABLE, montée de version). En cas de problème, restaurez le snapshot en 1 clic depuis le dashboard temps réel.

Monitoring temps réel : CPU, RAM, IOPS, slow queries

Le panel OmegaCloud affiche en temps réel les métriques CPU/RAM/SSD/réseau. Pour un monitoring MySQL spécifique, installez mytop ou innotop :

sudo apt install mytop -y
mytop -u root -p

Métriques clés à surveiller :

  • Innodb_buffer_pool_reads : si > 1 % des lectures, augmentez innodb_buffer_pool_size.
  • Threads_connected : si proche de max_connections, augmentez la limite ou optimisez la gestion des connexions (pooling côté application).
  • Slow_queries : analysez slow.log avec pt-query-digest.
  • Innodb_rows_read / Innodb_rows_updated : ratio lectures/écritures, guide le tuning des index.

Mise à jour MySQL : montée de version 8.0 → 8.3

Avant toute montée de version, réalisez un snapshot VPS et un dump SQL complet. Procédure pour Ubuntu 22.04 :

# Snapshot VPS depuis le panel OmegaCloud
# Dump SQL complet
sudo mysqldump -u root -p --all-databases --single-transaction > /tmp/pre_upgrade.sql

# Arrêt MySQL
sudo systemctl stop mysql

# Ajout du dépôt MySQL 8.3
wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb
sudo apt update
sudo apt install mysql-server

# Lancement de la mise à jour
sudo mysql_upgrade -u root -p
sudo systemctl restart mysql

Testez l'application en environnement staging avant de déployer en production. En cas de régression, restaurez le snapshot VPS.


Dashboard de monitoring avec graphiques temps réel de métriques CPU, RAM, IOPS et réseau, interface sombre avec courbes violet et teal, serveurs NVMe en arrière-plan flou


Conclusion

Installer et configurer MySQL sur VPS offre une maîtrise totale du SGBD, des performances prévisibles et une sécurité renforcée par rapport aux environnements mutualisés. En combinant les bonnes pratiques d'installation (utilisateurs dédiés, firewall ufw, fail2ban), une configuration my.cnf optimisée pour votre charge (InnoDB buffer pool, slow query log), et un plan de sauvegarde automatisé (mysqldump + snapshots), vous garantissez la fiabilité de votre base de données en production. Le monitoring continu et les montées de version régulières maintiennent votre infrastructure MySQL au meilleur niveau de sécurité et de performance.



FAQ

Quelle quantité de RAM allouer au buffer pool InnoDB sur un VPS 8 GB ?

Allouez 50 à 70 % de la RAM totale à innodb_buffer_pool_size. Sur un VPS 8 GB, configurez innodb_buffer_pool_size = 5G, laissant 3 GB pour l'OS, les connexions MySQL (environ 1 MB par connexion), et les buffers temporaires. Surveillez le ratio Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests avec SHOW GLOBAL STATUS : s'il dépasse 1 %, augmentez le buffer pool.

Comment autoriser les connexions MySQL distantes tout en restant sécurisé ?

Modifiez bind-address dans /etc/mysql/my.cnf pour écouter sur l'IP privée du VPS (ou 0.0.0.0 pour toutes les interfaces). Créez un utilisateur MySQL avec l'IP source autorisée : CREATE USER 'app'@'IP_CLIENT' IDENTIFIED BY 'pass';. Configurez ufw pour n'autoriser que cette IP sur le port 3306 : sudo ufw allow from IP_CLIENT to any port 3306 proto tcp. Utilisez des connexions TLS (require_secure_transport = ON) pour chiffrer le trafic MySQL.

Faut-il installer MySQL ou MariaDB sur un VPS en 2026 ?

MySQL 8.0/8.3 Community offre des fonctionnalités enterprise (window functions, CTE récursifs, JSON amélioré, histogrammes) et une compatibilité stricte avec les ORM modernes (Doctrine, Eloquent, Prisma). MariaDB 10.11 LTS apporte des optimisations du query optimizer et une compatibilité binaire avec MySQL 5.7. Choisissez MySQL si votre stack applicative cible MySQL 8.x, ou MariaDB pour une rétrocompatibilité 5.7 et des fonctionnalités spécifiques (colonnes dynamiques, Galera Cluster natif). Les deux s'installent et se configurent de manière identique sur un VPS Linux, selon la documentation officielle dev.mysql.com/doc/.

Prêt à mettre en pratique ce que vous venez de lire ?

Découvrir nos offres

Articles liés

Prêt à vous lancer ?

à partir de 6,99 € HT/mois

Découvrir nos offres

Hébergements

Navigation