Skip to main content

Welcome to a Grasp lesson

Create a free account to keep studying and create your own study path.

Lesson 28

Connecter n8n à une base de données et exécuter une requête SELECT.

Recommended resources

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 :

  1. Localisez votre fichier docker-compose.yml (ou docker-compose.yaml) que vous utilisez pour n8n.

  2. 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: {}
    
  3. Exécutez les commandes dans votre terminal, à l'emplacement du fichier docker-compose.yml :

    • docker compose down
    • docker 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 :

  1. Dans votre interface n8n, créez un nouveau workflow.
  2. Ajoutez un nœud MySQL.
  3. Dans les paramètres du nœud, cliquez sur le champ Credential et sélectionnez Create New.
  4. 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
  5. 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.

  1. Gardez votre nœud MySQL.

  2. Dans les paramètres, choisissez l'opération Execute SQL Query.

  3. Dans le champ Query, collez le code SQL suivant pour créer une table customers et 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
    
  4. 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.

  1. Ajoutez un nouveau nœud MySQL (ou modifiez le précédent).
  2. Changez l'opération pour Select. C'est une interface simplifiée pour construire des requêtes SELECT sans écrire de SQL.
  3. Dans le champ Table, tapez customers.
  4. Laissez le champ Columns vide pour tout sélectionner (SELECT *).
  5. Cliquez sur Execute Node.
n8n Database Node Configuration for MySQL SELECT Query
Cette image montre un exemple plus complexe avec l'opération 'Execute SQL'. Pour notre cas, l'opération 'Select' est plus simple et suffit pour récupérer toutes les données de la table `customers`.

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 Select pour des requêtes courantes, et une option Execute SQL Query pour 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.