Bonjour,
Dans la leçon précédente, nous avons construit un workflow de bout en bout pour extraire des données de factures reçues par email. C'était une excellente démonstration de la puissance de n8n pour automatiser des processus métier. Cependant, que se passe-t-il après avoir extrait ces données ? Les laisser dans l'historique d'exécution du workflow n'est pas une solution durable.
L'étape logique suivante est de stocker ces informations de manière structurée et permanente. C'est là que les bases de données entrent en jeu.
Objectif de la leçon : Apprendre à connecter n8n à une base de données (nous utiliserons MySQL comme exemple principal, mais les principes s'appliquent aussi à PostgreSQL) et à y lire des données avec une requête SELECT.
Cette compétence est fondamentale. Elle vous permettra de construire des workflows qui non seulement réagissent à des événements, mais qui peuvent aussi s'appuyer sur une source de vérité (un stock de produits, une liste de clients, un historique de commandes) pour prendre des décisions plus intelligentes.
1. Préparer Votre Environnement de Base de Données
Puisque vous avez déjà une instance n8n auto-hébergée, la manière la plus propre et la plus courante d'ajouter une base de données est de l'intégrer à votre configuration Docker. Nous allons ajouter un service MySQL à votre fichier docker-compose.yml.
Si vous préférez utiliser PostgreSQL, la démarche est très similaire. La vidéo How to Build a Local AI Agent With n8n (ressource LINK) montre comment démarrer un conteneur PostgreSQL avec une simple commande docker run (voir de 04:33 à 06:23), et vous pouvez adapter cette logique à votre fichier docker-compose.
Pour cet exercice, nous nous concentrerons sur MySQL.
How To Make N8n Work with MySQL in 10 Minutes FAST!
Cette vidéo de Solomon Christ Automation explique parfaitement comment ajouter un service MySQL à un fichier docker-compose.yml existant pour n8n. Suivez attentivement les étapes pour modifier votre configuration.
Regardez de 07:26 à 13:15. Le processus se décompose en deux parties : Modification du docker-compose.yml (07:26 - 11:49) : Le présentateur ajoute un nouveau service mysql au fichier. Faites une pause et copiez la structure dans votre propre fichier. Faites attention à l'indentation, qui est cruciale en YAML. Choisissez des mots de passe robustes. Redémarrage de Docker (11:49 - 13:15) : Il exécute docker compose down puis docker compose up -d. Cette commande arrête vos conteneurs actuels et les redémarre avec la nouvelle configuration, en téléchargeant et créant le conteneur MySQL.
Instructions pratiques :
-
Localisez votre fichier
docker-compose.yml(oudocker-compose.yaml) que vous utilisez pour n8n. -
Modifiez le fichier pour y ajouter le service
mysql, comme montré dans la vidéo. Voici un exemple de ce que vous devez ajouter (adaptez les mots de passe) :services: # ... votre service n8n existant ... mysql: image: mysql:8.0 container_name: n8n-mysql restart: always environment: MYSQL_ROOT_PASSWORD: 'VOTRE_MOT_DE_PASSE_ROOT_SECRET' MYSQL_DATABASE: 'n8n_db' MYSQL_USER: 'n8n_user' MYSQL_PASSWORD: 'VOTRE_MOT_DE_PASSE_UTILISATEUR_SECRET' ports: - '3307:3306' # Mappe le port interne 3306 sur le port 3307 de votre machine hôte volumes: - mysql_data:/var/lib/mysql # ... à la fin du fichier, dans la section volumes ... volumes: # ... votre volume n8n_data existant ... mysql_data: {} -
Exécutez les commandes dans votre terminal, à l'emplacement du fichier
docker-compose.yml:docker compose downdocker compose up -d
Votre instance n8n devrait redémarrer, et un nouveau conteneur n8n-mysql sera créé et lancé à ses côtés. La base de données est prête.
2. Connecter n8n à Votre Base de Données
Maintenant que la base de données est en cours d'exécution, nous devons dire à n8n comment s'y connecter. Cela se fait via la gestion des "Credentials".
How To Make N8n Work with MySQL in 10 Minutes FAST!
La suite de la même vidéo montre comment créer les 'credentials' dans n8n pour se connecter à la base de données que nous venons de créer.
Regardez de 13:15 à 14:39. Concentrez-vous sur les points suivants : Host : C'est le point le plus important. Comme n8n et MySQL tournent dans le même réseau Docker, le nom d'hôte est simplement le nom du service Docker : mysql. Database, User, Password : Utilisez les valeurs exactes que vous avez définies dans votre docker-compose.yml (n8n_db, n8n_user, etc.). Port : Le port standard de MySQL est 3306.
Instructions pratiques :
- Dans votre interface n8n, créez un nouveau workflow.
- Ajoutez un nœud MySQL.
- Dans les paramètres du nœud, cliquez sur le champ
Credentialet sélectionnezCreate New. - Remplissez le formulaire de connexion en utilisant les informations de votre
docker-compose.yml:- Host:
mysql(ou le nom de votre service Docker si vous l'avez changé). - Database:
n8n_db - User:
n8n_user - Password:
VOTRE_MOT_DE_PASSE_UTILISATEUR_SECRET - Port:
3306
- Host:
- Cliquez sur
Save. n8n testera la connexion. Si tout est correct, vous devriez voir un message de succès.
3. Exécuter une Requête SELECT
La connexion est établie. Il est temps de lire des données. Pour ce faire, nous allons d'abord insérer une donnée de test, puis la récupérer.
Un guide pratique des intégrations MySQL avec n8n
Pour bien comprendre les possibilités du nœud MySQL, cet article en français donne un excellent aperçu des opérations de base.
Lisez les sections 'Fonctionnalités principales' et 'Workflows courants'. Notez les différentes opérations disponibles : Select, Insert, Update, Delete, et Execute SQL. L'exemple sur les rapports automatisés illustre parfaitement l'utilisation d'une requête SELECT dans un contexte réel.
Mini-Exercice : Insérer et Sélectionner des Données
Nous allons créer un petit workflow pour peupler notre base et la lire ensuite.
Étape A : Insérer des données de test
Pour que notre SELECT renvoie quelque chose, nous devons d'abord créer une table et y insérer des données.
-
Gardez votre nœud MySQL.
-
Dans les paramètres, choisissez l'opération
Execute SQL Query. -
Dans le champ
Query, collez le code SQL suivant pour créer une tablecustomerset y insérer deux clients :CREATE TABLE IF NOT EXISTS customers ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), email VARCHAR(255) ); INSERT INTO customers (name, email) VALUES ('Alice Martin', 'alice.martin@example.com'), ('Bob Dupont', 'bob.dupont@example.com') ON DUPLICATE KEY UPDATE name=name; -- Pour éviter les erreurs si vous exécutez plusieurs fois -
Cliquez sur
Execute Node. La requête s'exécute et vos données sont maintenant dans la base.
Étape B : Sélectionner les données
Maintenant, lisons ces données.
- Ajoutez un nouveau nœud MySQL (ou modifiez le précédent).
- Changez l'opération pour
Select. C'est une interface simplifiée pour construire des requêtesSELECTsans écrire de SQL. - Dans le champ
Table, tapezcustomers. - Laissez le champ
Columnsvide pour tout sélectionner (SELECT *). - Cliquez sur
Execute Node.

Vous devriez voir en sortie une liste de deux objets JSON, un pour Alice et un pour Bob, représentant les lignes de votre table customers.
How To Make N8n Work with MySQL in 10 Minutes FAST!
Pour visualiser cette dernière étape, la fin de la vidéo de Solomon Christ montre l'utilisation de l'opération 'Select rows from a table'.
Regardez de 18:54 à 19:53. Le présentateur sélectionne la table et exécute le nœud pour récupérer les données, exactement comme nous venons de le faire.
Conclusion
Félicitations ! Vous avez franchi une étape cruciale en connectant n8n à une base de données. C'est la porte d'entrée vers des automatisations beaucoup plus sophistiquées.
Points clés à retenir :
- L'intégration d'une base de données à votre environnement n8n auto-hébergé est simple en utilisant Docker Compose.
- La connexion depuis n8n se fait via des Credentials, où le nom d'hôte (
host) correspond au nom du service Docker lorsque les deux conteneurs sont dans le même réseau. - Le nœud de base de données de n8n propose des opérations simplifiées comme
Selectpour des requêtes courantes, et une optionExecute SQL Querypour un contrôle total.
Dans la prochaine leçon, nous irons plus loin avec les bases de données en explorant les opérations d'écriture : INSERT, UPDATE et DELETE. Nous pourrons alors, par exemple, construire un workflow qui reçoit des données via un webhook et les enregistre automatiquement dans notre table customers.