Windows26 mai 2026 10 vues

Installer MySQL sur un VPS Windows Server

Installer MySQL sur un VPS Windows Server

Résumé rapide

Pour installer MySQL sur un VPS Windows Server en 5 étapes :

1) téléchargez MySQL Installer 8.4 LTS sur dev.mysql.com,

2) lancez l'installateur en mode Server Only,

3) configurez le mot de passe root et l'authentification caching_sha2_password,

4) vérifiez le service avec Get-Service MySQL84 dans PowerShell,

5) sécurisez l'installation avec mysql_secure_installation. Comptez 15 minutes. MySQL 8.4 LTS (version actuelle : 8.4.9) est la version recommandée pour la production.


Prérequis

Avant de commencer, vérifiez ces points sur votre machine :

  • Windows Server 2019 ou 2022 (2022 recommandé)

  • 2 Go de RAM minimum: 4 Go recommandés pour un usage réel

  • Accès administrateur via RDP

  • Port 3306 disponible (vérifiez avec netstat -ano | findstr :3306)

  • .NET Framework 4.5.2+ (inclus dans Windows Server 2019/2022)

Vous n'avez pas encore de VPS Windows ? Découvrez les offres VPS Windows OuiHeberg : disponibles dès quelques euros par mois avec Windows Server 2025 préinstallé.


Quelle version de MySQL choisir ?

Depuis 2023, Oracle a adopté un cycle de versions à deux branches : LTS (Long-Term Support) et Innovation (mises à jour fréquentes, moins stables). Voici ce que ça donne concrètement en mai 2026 :

Version

Type

Dernière release

Support jusqu'à

Recommandé pour

MySQL 8.0

Legacy

8.0.46

EOL avril 2026

Migration urgente requise

MySQL 8.4 LTS

LTS ✅

8.4.9

2032

Production: choix recommandé

MySQL 9.7 LTS

LTS (nouveau)

9.7.0

2032+

Production (sorti avril 2026)

Notre recommandation : MySQL 8.4.9 LTS pour la production.

MySQL 8.0 est en fin de vie depuis avril 2026: ne l'installez plus. MySQL 9.7 LTS vient tout juste de sortir (21 avril 2026) : il est solide mais son écosystème d'outils et de drivers n'est pas encore aussi mature que le 8.4. Le 8.4 LTS reste le choix le plus sûr pour un serveur de production en 2025-2026.


Méthode 1: Installation via l'installateur graphique (GUI)

C'est la méthode la plus simple. Elle convient à la majorité des cas.

Télécharger MySQL Installer

Rendez-vous sur dev.mysql.com/downloads/installer/ et téléchargez MySQL Installer for Windows (fichier mysql-installer-community-8.4.x.msi, ~450 Mo pour la version complète).

Vous pouvez aussi utiliser le web installer (~3 Mo) qui télécharge les composants à la volée: pratique si vous avez une bonne connexion.

Choisir le type d'installation

Au lancement, l'installateur propose plusieurs profils :

Type

Ce qu'il installe

Cas d'usage

Server Only

MySQL Server uniquement

VPS de production ✅

Developer Default

Server + Workbench + connecteurs

Poste de développement

Full

Tout (>1 Go)

Rarement utile sur un VPS

Choisissez "Server Only" sur un VPS. Inutile d'installer MySQL Workbench sur un serveur sans interface graphique permanente.

Configurer le serveur MySQL

L'assistant vous pose plusieurs questions importantes :

Type de configuration :

  • Development Computer: MySQL utilise peu de ressources (pour un poste de dev)

  • Server Computer: partage les ressources avec d'autres services

  • Dedicated Computer: MySQL prend la majorité de la RAM ✅ (recommandé sur un VPS dédié à MySQL)

Port : laissez 3306 par défaut sauf contrainte spécifique.

Méthode d'authentification : choisissez caching_sha2_password (option recommandée depuis MySQL 8.0). N'utilisez mysql_native_password que si vous avez des anciens clients qui ne supportent pas SHA-2.

Mot de passe root : choisissez un mot de passe fort (16+ caractères, majuscules, chiffres, caractères spéciaux). Notez-le immédiatement dans un gestionnaire de mots de passe.

Service Windows : laissez le nom par défaut (MySQL84) et cochez "Start the MySQL Server at System Startup".

Vérifier l'installation

Une fois l'installation terminée, ouvrez PowerShell en tant qu'administrateur :

# Vérifier que le service tourne
Get-Service MySQL84

# Résultat attendu :
# Status   Name               DisplayName
# ------   ----               -----------
# Running  MySQL84            MySQL84

Connectez-vous ensuite au CLI MySQL pour confirmer :

cd "C:\Program Files\MySQL\MySQL Server 8.4\bin"
.\mysql.exe -u root -p

Entrez votre mot de passe root. Si vous obtenez le prompt mysql>, l'installation est réussie.

-- Vérifier la version installée
SELECT VERSION();
-- Résultat : 8.4.9

Méthode 2: Installation silencieuse via PowerShell (avancé)

Cette méthode est idéale pour automatiser des déploiements ou configurer plusieurs VPS sans interface graphique. Tout se fait en PowerShell.

# 1. Télécharger le MSI MySQL 8.4 LTS
$url = "https://dev.mysql.com/get/Downloads/MySQL-8.4/mysql-8.4.9-winx64.msi"
$dest = "C:\Temp\mysql-8.4.9-winx64.msi"
New-Item -ItemType Directory -Force -Path "C:\Temp" | Out-Null
Invoke-WebRequest -Uri $url -OutFile $dest -UseBasicParsing

# 2. Installation silencieuse avec paramètres
$arguments = @(
    "/i", $dest,
    "/qn",
    "/L*V", "C:\Temp\mysql_install.log",
    "INSTALLDIR=`"C:\Program Files\MySQL\MySQL Server 8.4\`"",
    "DATADIR=`"C:\ProgramData\MySQL\MySQL Server 8.4\Data\`"",
    "PORT=3306",
    "SERVICENAME=MySQL84",
    "NTSERVICE=1",
    "ADDLOCAL=MySQLServer"
)
Start-Process msiexec.exe -ArgumentList $arguments -Wait -NoNewWindow

# 3. Initialiser la base de données
$mysqlBin = "C:\Program Files\MySQL\MySQL Server 8.4\bin"
& "$mysqlBin\mysqld.exe" --initialize-insecure --user=mysql

# 4. Démarrer le service
Start-Service MySQL84

# 5. Définir le mot de passe root (remplacez VotreMotDePasse par un mot de passe fort)
& "$mysqlBin\mysql.exe" -u root --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'VotreMotDePasse!';"

Write-Host "MySQL 8.4 installé avec succès." -ForegroundColor Green

Vérification post-installation :

Get-Service MySQL84
& "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysql.exe" -u root -p -e "SELECT VERSION();"

Note : L'option --initialize-insecure crée un compte root sans mot de passe. Le script le définit immédiatement après. Ne laissez jamais un MySQL sans mot de passe root, même temporairement.


Configurer l'accès distant à MySQL

Par défaut, MySQL n'écoute que sur 127.0.0.1. Pour vous connecter depuis un autre serveur ou un outil comme MySQL Workbench, vous devez ouvrir l'accès distant.

Ouvrir le port 3306 dans le pare-feu Windows

# Ajouter une règle entrante pour MySQL
New-NetFirewallRule `
    -DisplayName "MySQL 3306" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 3306 `
    -Action Allow `
    -Profile Any

# Vérifier la règle
Get-NetFirewallRule -DisplayName "MySQL 3306"

Pour aller plus loin sur la gestion du pare-feu, consultez notre guide pour configurer le pare-feu Windows Server.

Créer un utilisateur avec accès distant

Ne donnez jamais l'accès distant au compte root. Créez un utilisateur dédié :

-- Connexion en root d'abord
mysql -u root -p

-- Créer un utilisateur distant (remplacez l'IP par celle de votre client)
CREATE USER 'monuser'@'192.168.1.100' IDENTIFIED BY 'MotDePasseFort!2025';

-- Ou pour autoriser toutes les IPs (moins sécurisé)
CREATE USER 'monuser'@'%' IDENTIFIED BY 'MotDePasseFort!2025';

-- Accorder les droits sur une base spécifique
GRANT SELECT, INSERT, UPDATE, DELETE ON mabase.* TO 'monuser'@'192.168.1.100';

FLUSH PRIVILEGES;

Conseil : restreignez toujours l'accès à une IP précise plutôt qu'au wildcard %.

Activer SSL/TLS pour les connexions distantes

MySQL 8.4 génère automatiquement des certificats SSL au démarrage. Vérifiez qu'ils sont actifs :

SHOW VARIABLES LIKE '%ssl%';
-- have_ssl doit afficher : YES

Pour forcer SSL sur un utilisateur distant :

ALTER USER 'monuser'@'192.168.1.100' REQUIRE SSL;
FLUSH PRIVILEGES;

Côté client, la connexion se fait alors avec :

mysql -u monuser -p -h IP_DU_SERVEUR --ssl-mode=REQUIRED

Optimiser les performances MySQL (my.ini)

Le fichier de configuration MySQL sur Windows se trouve ici : C:\ProgramData\MySQL\MySQL Server 8.4\my.ini

Ouvrez-le avec Notepad++ ou PowerShell et ajustez ces paramètres selon votre RAM disponible :

[mysqld]
# Taille du buffer InnoDB: paramètre le plus important
# Réglez à 70% de la RAM disponible pour MySQL
innodb_buffer_pool_size = 2G

# Nombre maximum de connexions simultanées
max_connections = 150

# Taille des fichiers de log InnoDB
innodb_log_file_size = 256M

# Cache des requêtes (désactivé par défaut en 8.x, laissez à 0)
query_cache_size = 0
query_cache_type = 0

# Threads I/O InnoDB (= nombre de cœurs CPU)
innodb_read_io_threads = 4
innodb_write_io_threads = 4

Tableau de configuration recommandée selon la RAM du VPS :

RAM du VPS

innodb_buffer_pool_size

max_connections

innodb_log_file_size

2 Go

1G

75

128M

4 Go

2,5G

150

256M

8 Go

5G

300

512M

16 Go

11G

500

1G

Après modification, redémarrez le service :

Restart-Service MySQL84

Sécuriser MySQL sur Windows Server

Lancer mysql_secure_installation

C'est la première chose à faire après l'installation :

cd "C:\Program Files\MySQL\MySQL Server 8.4\bin"
.\mysql_secure_installation.exe

L'outil vous guide pour supprimer les utilisateurs anonymes, désactiver le login root distant et supprimer la base test. Répondez Y à toutes les questions.

Les 8 points de sécurité essentiels

1. Supprimer les utilisateurs anonymes

DELETE FROM mysql.user WHERE User='';
FLUSH PRIVILEGES;

2. Désactiver le login root distant

DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
FLUSH PRIVILEGES;

3. Supprimer la base de données test

DROP DATABASE IF EXISTS test;
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
FLUSH PRIVILEGES;

4. Utiliser des mots de passe forts: activer la politique de validation

INSTALL PLUGIN validate_password SONAME 'validate_password.dll';
SET GLOBAL validate_password.policy = STRONG;
SET GLOBAL validate_password.length = 12;

5. Limiter les privilèges par utilisateur

Ne jamais utiliser GRANT ALL PRIVILEGES ON *.* TO .... Accordez uniquement les droits nécessaires sur les bases concernées.

-- Bon exemple
GRANT SELECT, INSERT, UPDATE ON appdb.* TO 'appuser'@'localhost';

-- À éviter absolument
-- GRANT ALL PRIVILEGES ON *.* TO 'appuser'@'%';

6. Activer les logs d'audit

Ajoutez dans my.ini :

[mysqld]
general_log = 1
general_log_file = "C:/ProgramData/MySQL/MySQL Server 8.4/Data/mysql_general.log"
log_error = "C:/ProgramData/MySQL/MySQL Server 8.4/Data/mysql_error.log"

7. Chiffrer les connexions (SSL/TLS)

Comme vu dans la section accès distant, forcez SSL sur tous les utilisateurs qui se connectent depuis l'extérieur avec REQUIRE SSL.

8. Mettre à jour régulièrement

Consultez dev.mysql.com/downloads/mysql/ pour les nouvelles versions. Les mises à jour de sécurité sont fréquentes: abonnez-vous aux MySQL Security Advisories.


Automatiser les sauvegardes MySQL

Script PowerShell complet avec rotation

Copiez ce script dans C:\Scripts\mysql_backup.ps1 :

# =============================================
# Script de sauvegarde MySQL avec rotation
# À planifier via le Planificateur de tâches
# =============================================

$mysqlBin    = "C:\Program Files\MySQL\MySQL Server 8.4\bin"
$backupDir   = "C:\Backups\MySQL"
$mysqlUser   = "root"
$mysqlPass   = "VotreMotDePasse!"   # Ou utilisez un fichier .cnf
$retention   = 7                    # Jours de rétention

# Créer le dossier de sauvegarde si nécessaire
New-Item -ItemType Directory -Force -Path $backupDir | Out-Null

# Nom du fichier avec horodatage
$timestamp   = Get-Date -Format "yyyy-MM-dd_HH-mm"
$backupFile  = "$backupDir\mysql_backup_$timestamp.sql"
$compressedFile = "$backupFile.gz"

# Lister toutes les bases (hors bases système)
$databases = & "$mysqlBin\mysql.exe" -u $mysqlUser -p"$mysqlPass" `
    -e "SHOW DATABASES;" --batch --skip-column-names 2>$null |
    Where-Object { $_ -notin @('information_schema','performance_schema','sys','mysql') }

# Dump de chaque base
foreach ($db in $databases) {
    $dbFile = "$backupDir\${db}_$timestamp.sql"
    & "$mysqlBin\mysqldump.exe" `
        -u $mysqlUser -p"$mysqlPass" `
        --single-transaction `
        --routines `
        --triggers `
        --databases $db `
        --result-file=$dbFile 2>$null

    if ($LASTEXITCODE -eq 0) {
        Write-Host "✓ Sauvegarde réussie : $db" -ForegroundColor Green
    } else {
        Write-Host "✗ Erreur sur : $db" -ForegroundColor Red
    }
}

# Rotation : supprimer les fichiers plus vieux que $retention jours
Get-ChildItem -Path $backupDir -Filter "*.sql" |
    Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-$retention) } |
    Remove-Item -Force

Write-Host "Rotation effectuée. Fichiers conservés : $retention jours." -ForegroundColor Cyan

Planifier avec le Planificateur de tâches Windows

# Créer une tâche planifiée: sauvegarde quotidienne à 2h du matin
$action  = New-ScheduledTaskAction `
    -Execute "PowerShell.exe" `
    -Argument "-NonInteractive -ExecutionPolicy Bypass -File C:\Scripts\mysql_backup.ps1"

$trigger = New-ScheduledTaskTrigger -Daily -At "02:00"

$settings = New-ScheduledTaskSettingsSet `
    -ExecutionTimeLimit (New-TimeSpan -Hours 1) `
    -RestartCount 3 `
    -RestartInterval (New-TimeSpan -Minutes 5)

Register-ScheduledTask `
    -TaskName "MySQL Backup Daily" `
    -Action $action `
    -Trigger $trigger `
    -Settings $settings `
    -RunLevel Highest `
    -Force

Write-Host "Tâche planifiée créée avec succès." -ForegroundColor Green

Pour aller plus loin sur la stratégie de sauvegarde complète de votre serveur, consultez notre guide pour sauvegarder votre VPS Windows.


Dépannage: 6 erreurs fréquentes

1. Le service MySQL ne démarre pas

Vérifiez les logs d'erreur en premier :

Get-Content "C:\ProgramData\MySQL\MySQL Server 8.4\Data\[nom-machine].err" -Tail 50

Causes fréquentes : port 3306 déjà occupé, permissions insuffisantes sur le dossier Data, fichier my.ini mal formé.

2. Erreur "Access denied for user root"

Si vous avez oublié le mot de passe root ou si l'authentification échoue :

# Arrêter le service
Stop-Service MySQL84

# Démarrer MySQL en mode sans authentification
& "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysqld.exe" --skip-grant-tables --skip-networking

# Dans une autre fenêtre PowerShell, se connecter sans mot de passe
& "C:\Program Files\MySQL\MySQL Server 8.4\bin\mysql.exe" -u root

# Réinitialiser le mot de passe
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NouveauMotDePasse!';
EXIT;

# Redémarrer normalement
Stop-Process -Name mysqld -Force
Start-Service MySQL84

3. Le port 3306 est déjà utilisé

# Identifier le processus qui utilise le port 3306
netstat -ano | findstr :3306

# Trouver le nom du processus avec son PID
Get-Process -Id [PID_TROUVÉ]

Soit vous arrêtez le processus concurrent, soit vous changez le port MySQL dans my.ini (port=3307).

4. Impossible de se connecter à distance

Checklist rapide :

  • Le port 3306 est-il ouvert dans le pare-feu Windows ? (Get-NetFirewallRule -DisplayName "MySQL 3306")

  • MySQL écoute-t-il sur 0.0.0.0 ? (SHOW VARIABLES LIKE 'bind_address'; doit retourner * ou 0.0.0.0)

  • L'utilisateur a-t-il les droits depuis l'IP distante ? (SELECT User, Host FROM mysql.user;)

  • Le pare-feu de votre hébergeur/réseau bloque-t-il le port ?

Pour écouter sur toutes les interfaces, ajoutez dans my.ini :

[mysqld]
bind-address = 0.0.0.0

5. Mot de passe root oublié (procédure de reset)

Voir le point 2 ci-dessus: la procédure --skip-grant-tables fonctionne pour les deux cas.

6. Erreur "Table is full" (InnoDB)

Cette erreur survient quand innodb_buffer_pool_size est trop faible ou que le tablespace est saturé.

-- Vérifier l'espace disponible
SELECT table_schema, ROUND(SUM(data_length+index_length)/1024/1024,1) AS "Taille (Mo)"
FROM information_schema.tables
GROUP BY table_schema;

-- Vérifier la taille du tablespace InnoDB
SHOW VARIABLES LIKE 'innodb_data_file_path';

Augmentez innodb_buffer_pool_size dans my.ini selon le tableau de la section performance, puis redémarrez le service.


FAQ

Quelle version de MySQL installer sur Windows Server 2022 ?

Installez MySQL 8.4.9 LTS. C'est la version Long-Term Support recommandée pour la production en 2026-2028, avec support garanti jusqu'en 2032. MySQL 8.0 est en fin de vie depuis avril 2026.

MySQL est-il gratuit sur Windows Server ?

Oui. MySQL Community Edition est totalement gratuite sous licence GPL. MySQL Enterprise Edition (payante) ajoute des outils de monitoring, d'audit et de sauvegarde avancés: utile pour les grandes entreprises, mais pas nécessaire pour la plupart des usages.

Comment changer le port MySQL par défaut ?

Modifiez my.ini (C:\ProgramData\MySQL\MySQL Server 8.4\my.ini) et changez la ligne port=3306 par le port souhaité (ex. port=3307). Redémarrez le service et mettez à jour la règle de pare-feu correspondante.

MySQL ou MariaDB sur Windows Server ?

Les deux sont d'excellents choix. MySQL 8.4 LTS est plus adapté si vous utilisez des outils Oracle ou des fonctionnalités spécifiques (JSON, Group Replication). MariaDB est souvent plus performant sur des charges mixtes et reste 100% communautaire. Pour un VPS Windows standard, MySQL 8.4 est le choix le plus documenté et le plus compatible avec les stacks PHP/Python modernes.

Comment savoir si MySQL est bien installé ?

Deux vérifications rapides en PowerShell : Get-Service MySQL84 (le statut doit être Running) et mysql -u root -p -e "SELECT VERSION();" (doit retourner 8.4.9).

Peut-on installer MySQL sur un VPS Windows 2 Go de RAM ?

Oui, mais c'est le minimum. Avec 2 Go, réglez innodb_buffer_pool_size = 1G et max_connections = 75. Pour des charges de production réelles (plusieurs dizaines de requêtes simultanées), 4 Go de RAM est le minimum confortable.


Sources utiles