Déploiement
Déploiement • Chapitre 14 : Projet pratique final

Configurer une base de données distante

Troisième étape du projet pratique : provisionnez une base de données MySQL ou PostgreSQL managée dans le cloud, sécurisez l'accès avec un utilisateur aux privilèges restreints et exécutez vos migrations de schéma automatisées.

☁️
Base Cloud Managée

Sauvegardes automatiques quotidiennes, haute disponibilité et zéro maintenance système (Aiven, Supabase).

🔗
DATABASE_URL

Chaîne de connexion standardisée regroupant protocole, utilisateur, mot de passe, hôte et port.

🔒
Chiffrement SSL Obligatoire

Paramètre ?sslmode=require garantissant que vos requêtes SQL sont chiffrées sur le réseau public.

🏗️
Migrations Automatisées

Création automatique des tables et contraintes d'intégrité lors de la livraison (Prisma/TypeORM).

run-migrations.sh
# 1. Format de la chaîne de connexion secrète (fournie par Aiven ou Railway) :
DATABASE_URL="mysql://app_user:V3ryS3cur3P@ssw0rd!@mysql-learnweb.aivencloud.com:15432/learnweb_prod?ssl-mode=REQUIRED"

# 2. Exécuter les migrations de schéma sur la base distante depuis votre machine ou CI/CD
$ npx prisma migrate deploy
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "learnweb_prod" at "mysql-learnweb.aivencloud.com:15432"

Applying migration '20261011120000_init_database'...
Applying migration '20261011140000_add_orders_table'...

The following migrations have been applied:
  - 20261011120000_init_database
  - 20261011140000_add_orders_table

All migrations have been successfully applied. (1.42s)

# 3. Vérifier les tables créées avec un client SQL sécurisé
$ mysql -h mysql-learnweb.aivencloud.com -P 15432 -u app_user -p --ssl-mode=REQUIRED learnweb_prod -e "SHOW TABLES;"

Guide Approfondi & Architecture Système

1. Choisir entre Base Managée et Base sur VPS

Pour votre projet pratique :
  • Base Managée Cloud (Recommandé pour débuter) : Des plateformes comme Aiven, PlanetScale, Supabase ou Neon s'occupent des sauvegardes quotidiennes, de la réplication et des mises à jour de sécurité. En cas de crash matériel, elles basculent sur un serveur miroir sans perte de données.
  • Base sur VPS Local (127.0.0.1) : Idéale pour les petits budgets. La base ne consomme aucun coût supplémentaire mais exige que vous configuriez vous-même les sauvegardes par cron et les restrictions de pare-feu UFW.

2. La Sécurité des Comptes Utilisateurs MySQL

Ne connectez JAMAIS votre API avec l'utilisateur root :

Créez un compte dédié possédant uniquement les droits nécessaires (SELECT, INSERT, UPDATE, DELETE) sur la base spécifique de l'application, et retirez-lui les privilèges administratifs (DROP DATABASE, GRANT OPTION).

Tableau Comparatif : Services de Bases de Données Managées Gratuites / Économiques

Fournisseur CloudMoteur SQL ProposéPlan Gratuit OffertConnexion Sécurisée
AivenMySQL / PostgreSQL / RedisPlan d'essai gratuit généreuxCertificat SSL/TLS obligatoire
SupabasePostgreSQL2 projets gratuits (500 Mo)SSL natif + API REST temps réel
Neon.techServerless PostgreSQL3 Go de stockage gratuitSSL natif avec mise en veille automatique
Railway MySQLMySQL 8.0Inclus dans les crédits de 5 $Connexion interne privée ou externe chiffrée