MySQL et MariaDB : installation et première base de données
Installer un serveur de base de données sur VDS, sécuriser la configuration initiale, créer une base et un utilisateur, tester la connexion et résoudre les premières erreurs courantes.
Mis à jour le 23 août 2026
MySQL et sa branche compatible MariaDB sont ce sur quoi tournent la plupart des sites PHP. Leurs commandes et leur client sont identiques ; les différences commencent dans le réglage fin.
Installation
apt update && apt install -y mariadb-server # Debian, Ubuntu
dnf install -y mariadb-server # AlmaLinux, CentOS Stream
systemctl enable --now mariadb
Si vous avez spécifiquement besoin du MySQL d'Oracle, installez mysql-server depuis son dépôt officiel. Le service s'appellera mysql.
Bouchez immédiatement les failles de base :
mariadb-secure-installation
Le script vous demandera de définir le mot de passe root, de supprimer les utilisateurs anonymes, d'interdire la connexion root à distance et de supprimer la base de test. Répondez « oui » à tout.
Base de données et utilisateur
Ne faites pas tourner votre application en root — créez un utilisateur distinct pour chaque projet :
CREATE DATABASE shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'shop'@'localhost' IDENTIFIED BY 'long-random-password';
GRANT ALL PRIVILEGES ON shop.* TO 'shop'@'localhost';
FLUSH PRIVILEGES;
L'encodage utf8mb4 est obligatoire : l'ancien utf8 de MySQL ne stocke que trois octets par caractère et casse sur les emoji et certains caractères.
Vérifiez :
mariadb -u shop -p shop -e "SELECT 1;"
Pour en savoir plus sur les permissions, consultez utilisateurs et privilèges.
Configuration initiale
Les réglages se trouvent dans /etc/mysql/mariadb.conf.d/50-server.cnf ou /etc/my.cnf.d/. Voici le minimum à corriger tout de suite :
[mysqld]
bind-address = 127.0.0.1
innodb_buffer_pool_size = 1G
max_connections = 100
bind-address = 127.0.0.1 rend la base de données accessible uniquement en local. Si votre application est sur la même machine, c'est ainsi que cela doit être. Si vous avez besoin de la base de données depuis l'extérieur, lisez accès distant avant de modifier quoi que ce soit.
La taille du buffer pool se choisit selon le palier — voir réglage de la mémoire.
Après modification : systemctl restart mariadb.
Erreurs courantes
| Symptôme | Cause | Que faire |
|---|---|---|
Access denied for user | Mot de passe erroné ou l'entrée utilisateur est liée à un autre hôte | Vérifiez SELECT user, host FROM mysql.user; |
Can't connect through socket | Le service n'est pas démarré | systemctl status mariadb, consultez journalctl -u mariadb |
Too many connections | L'application ne ferme pas les connexions | Un pool côté application, puis max_connections |
| Texte illisible | Encodages différents pour la base de données et la connexion | Ramenez tout en utf8mb4 |
| La base de données ne démarre pas après un redémarrage | Le service n'est pas configuré pour démarrer au boot | systemctl enable mariadb |
Il n'y a pas de sauvegardes automatiques de la machine. Mettez en place un dump juste après votre première table fonctionnelle — sauvegardes de base de données. Le disque NVMe est rapide, mais il n'y en a qu'un.