Skip to content
VDS · Bases de données

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ômeCauseQue faire
Access denied for userMot de passe erroné ou l'entrée utilisateur est liée à un autre hôteVérifiez SELECT user, host FROM mysql.user;
Can't connect through socketLe service n'est pas démarrésystemctl status mariadb, consultez journalctl -u mariadb
Too many connectionsL'application ne ferme pas les connexionsUn pool côté application, puis max_connections
Texte illisibleEncodages différents pour la base de données et la connexionRamenez tout en utf8mb4
La base de données ne démarre pas après un redémarrageLe service n'est pas configuré pour démarrer au bootsystemctl 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.