Base de données · 9 min read · Dec 20, 2025

Comment installer et configurer la base de données graphique Neo4j sur Ubuntu 22.04

Neo4j est une base de données graphique utilisée pour créer des relations de données. Les données dans les bases de données traditionnelles sont enregistrées dans une structure de type tableau. Une base de données graphique enregistre les relations entre les nœuds de données. Chaque nœud stocke des références à tous les autres nœuds auxquels il est connecté. Les bases de données traditionnelles ne sauvegardent pas directement les données de relation, mais elles peuvent déterminer les connexions en recherchant autour des structures de données avec l’aide de l’indexation, ce qui est coûteux et long. Une base de données graphique comme Neo4j évite tout ce surcoût et peut encoder et interroger des relations complexes.

Comment les données sont stockées dans une base de données graphique

Neo4j est développé par Neo Technology. Il est écrit en Java et Scala et est disponible à la fois en version communautaire gratuite et en version entreprise. Neo4j utilise son propre langage de requête appelé Cypher, mais les requêtes peuvent être écrites dans d’autres styles.

Ce tutoriel vous apprendra à installer et configurer Neo4j sur un serveur Ubuntu 22.04.

Prérequis

  • Un serveur exécutant Ubuntu 22.04 avec un minimum de 1 cœur de CPU et 2 Go de mémoire. Vous devrez mettre à niveau le serveur selon les besoins.
  • Un utilisateur non-root avec des privilèges sudo.
  • Assurez-vous que tout est à jour.
  • $ sudo apt update
    
  • Installez les paquets utilitaires de base. Certains d’entre eux peuvent déjà être installés. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y

Étape 1 - Installer Neo4j

La première étape pour installer Neo4j consiste à ajouter la clé GPG.

$ curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg

Ajoutez le dépôt Neo4j au répertoire des sources APT de votre système.

$ echo "deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable latest" | sudo tee -a /etc/apt/sources.list.d/neo4j.list

Pour éviter le risque de mise à niveau vers la prochaine version majeure, vous pouvez spécifier les versions majeures et mineures requises à la place de latest dans la commande ci-dessus.

La commande suivante ajoutera le dépôt Neo4j 5.x, ce qui signifie que vous ne finirez pas par mettre à niveau vers la version 6.x dès qu’elle sera publiée.

$ echo "deb [signed-by=/usr/share/keyrings/neo4j.gpg] https://debian.neo4j.com stable 5" | sudo tee -a /etc/apt/sources.list.d/neo4j.list

Mettez à jour la liste des dépôts du système.

$ sudo apt update

Listez les versions de Neo4j disponibles pour l’installation.

$ apt list -a neo4j
Listing... Done
neo4j/stable 1:5.3.0 all
neo4j/stable 1:5.2.0 all
neo4j/stable 1:5.1.0 all

Installez l’édition communautaire de Neo4j.

$ sudo apt install neo4j

Vous pouvez installer une version spécifique en utilisant la commande suivante.

$ sudo apt install neo4j=1:5.3.0

Notez que la version inclut un composant de version d’époque (1:), conformément à la politique de versionnement de Debian.

Neo4j installera automatiquement la version JDK requise avec lui.

Activez le service Neo4j.

$ sudo systemctl enable neo4j

Démarrez le service Neo4j.

$ sudo systemctl start neo4j

Vérifiez l’état du service Neo4j.

$ sudo systemctl status neo4j
? neo4j.service - Base de données graphique Neo4j
     Loaded: loaded (/lib/systemd/system/neo4j.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2023-01-21 20:50:52 UTC; 33s ago
   Main PID: 5241 (java)
      Tasks: 72 (limit: 1030)
     Memory: 399.3M
        CPU: 20.350s
     CGroup: /system.slice/neo4j.service

Étape 2 - Tester la connexion

Neo4j utilise le Cypher Shell pour travailler avec les données.

Connectez-vous au Cypher Shell.

$ cypher-shell

Vous serez invité à entrer un nom d’utilisateur et un mot de passe. Le nom d’utilisateur et le mot de passe par défaut sont neo4j. Vous serez invité à choisir un nouveau mot de passe.

username: neo4j
password:
Password change required
new password:
confirm password:
Connected to Neo4j using Bolt protocol version 5.0 at neo4j://localhost:7687 as user neo4j.
Type :help for a list of available commands or :exit to exit the shell.
Note that Cypher queries must end with a semicolon.
neo4j@neo4j>

Cela confirme la connexion réussie à Neo4j DBMS.

Tapez :exit pour quitter le shell.

neo4j@neo4j> :exit

Bye!

Étape 3 - Configurer Neo4j pour l’accès à distance

Pour les environnements de production, vous devrez peut-être confirmer que Neo4j accepte les connexions des hôtes distants. Par défaut, Neo4j accepte les connexions uniquement depuis localhost.

Nous pouvons configurer Neo4j pour accepter les connexions des hôtes distants en modifiant son fichier de configuration. Neo4j stocke ses paramètres dans le fichier /etc/neo4j/neo4j.conf. Ouvrez-le pour le modifier.

$ sudo nano /etc/neo4j/neo4j.conf

Trouvez la ligne commentée #dbms.default_listen_address=0.0.0.0 et décommentez-la en supprimant le dièse au début.

. . .
#***************************************************************
# Configuration du connecteur réseau
#***************************************************************

# Avec la configuration par défaut, Neo4j n'accepte que les connexions locales.
# Pour accepter les connexions non locales, décommentez cette ligne :
server.default_listen_address=0.0.0.0
. . .

Enregistrez le fichier en appuyant sur Ctrl + X et en entrant Y lorsque vous y êtes invité.

Par défaut, la valeur 0.0.0.0 liera Neo4j à toutes les interfaces IPv4 disponibles sur votre système, y compris localhost. Si vous souhaitez limiter Neo4j à une adresse IP particulière, par exemple, une adresse IP de réseau privé, spécifiez l’adresse IP qui est assignée à l’interface réseau privée de votre serveur ici.

Vous pouvez également configurer Neo4j pour utiliser des interfaces IPv6. Comme avec IPv4, vous pouvez définir la valeur default_listen_address sur une adresse IPv6 spécifique que vous utiliserez pour communiquer avec Neo4j. Si vous souhaitez limiter Neo4j à n’utiliser que l’adresse IPv6 locale de votre serveur, spécifiez ::1, qui correspond à localhost en notation IPv6.

Si vous configurez Neo4j avec une adresse IPv6, vous ne pourrez pas vous connecter avec cypher-shell en utilisant directement l’adresse IPv6. Au lieu de cela, vous devez soit configurer un nom DNS qui résout l’adresse IPv6, soit ajouter une entrée dans le fichier /etc/hosts du système distant qui associe l’adresse à un nom. Ensuite, vous pourrez utiliser le nom DNS ou le nom du fichier hosts pour vous connecter à Neo4j en utilisant IPv6 depuis votre système distant.

Par exemple, un serveur Neo4j avec une adresse IPv6 comme 2001:db8::1 nécessiterait que le système distant de connexion ait une entrée /etc/hosts comme indiqué ci-dessous.

2001:db8::1 your_hostname

Vous pouvez ensuite vous connecter au serveur depuis le système distant en utilisant le nom que vous avez spécifié comme indiqué ci-dessous.

$ cypher-shell -a 'neo4j://your_hostname:7687'

Si vous restreignez Neo4j à utiliser l’adresse localhost IPv6 de ::1, alors vous pouvez vous y connecter localement sur le serveur Neo4j lui-même en utilisant le nom ip6-localhost préconfiguré de votre fichier /etc/hosts comme indiqué ci-dessous.

$ cypher-shell -a 'neo4j://ip6-localhost:7687'

Une fois que vous invoquez cypher-shell avec l’URI de connexion, vous serez invité à entrer votre nom d’utilisateur et votre mot de passe comme d’habitude.

Étape 4 - Configurer l’accès au pare-feu (UFW)

Une fois que vous avez activé les connexions à distance, vous pouvez utiliser le pare-feu pour restreindre Neo4j afin de limiter les connexions uniquement aux systèmes de confiance auxquels il peut se connecter.

Neo4j crée deux sockets réseau, l’un sur le port 7474 pour l’interface HTTP intégrée, et le protocole bolt principal sur le port 7687.

Ubuntu 22.04 utilise par défaut le pare-feu simplifié (UFW).

Configurez le pare-feu pour permettre à un hôte distant de confiance d’accéder à l’interface bolt en utilisant IPv4 avec la commande suivante.

$ sudo ufw allow from 203.0.113.1 to any port 7687 proto tcp

Substituez l’adresse IP du système distant de confiance à la place de la valeur 203.0.113.1. De même, vous pouvez autoriser toute une plage de réseau en utilisant la commande suivante.

$ sudo ufw allow from 192.0.2.0/24 to any port 7687 proto tcp

Substituez le réseau réel à la place de la valeur 192.0.2.0/24.

Pour permettre l’accès à un hôte distant en utilisant IPv6, vous pouvez utiliser la commande suivante.

$ sudo ufw allow from 2001:DB8::1/128 to any port 7687 proto tcp

Substituez l’adresse IPv6 de votre système de confiance à la place de la valeur 2001:DB8::1/128.

Comme avec IPv4, vous pouvez autoriser une plage d’adresses IPv6 en utilisant la commande suivante.

$ ufw allow from 192.0.2.0/24 to any port 7687 proto tcp

Encore une fois, substituez votre plage de réseau de confiance à la place de la plage de réseau 2001:DB8::/32 mise en surbrillance.

Rechargez le pare-feu pour appliquer les modifications.

$ sudo ufw reload

Vérifiez l’état du pare-feu.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
22/tcp (v6)                ALLOW       Anywhere (v6)
7687/tcp                   ALLOW       203.0.113.1

Étape 5 - Utiliser Neo4j

Connectez-vous à Neo4j en utilisant l’outil cypher-shell. Vous serez invité à entrer votre nom d’utilisateur et votre mot de passe.

$ cypher-shell

Si vous avez configuré Neo4j pour l’accès à distance, utilisez la commande suivante pour vous connecter à Neo4j depuis le système distant.

$ cypher-shell -a 'neo4j://203.0.113.1:7687'

Ici, 203.0.113.1 est l’adresse IP du serveur Neo4j.

Si vous utilisez IPv6, assurez-vous d’avoir une entrée /etc/hosts avec un nom décrit à l’étape 3. Ensuite, connectez-vous au serveur Neo4j comme suit.

$ cypher-shell -a 'neo4j://your_hostname:7687'

Assurez-vous que your_hostname correspond à l’adresse IPv6 de votre serveur Neo4j dans le fichier /etc/hosts du système distant.

Ajoutons un nœud appelé Slite et les noms des auteurs à Neo4j. La commande suivante créera un nœud de type Slite, avec un nom Navjot Singh.

neo4j@neo4j> CREATE (:Slite {name: 'Navjot Singh'});

Vous obtiendrez la sortie suivante.

0 rows
ready to start consuming query after 124 ms, results consumed after another 0 ms
Added 1 nodes, Set 1 properties, Added 1 labels

Ensuite, nous ajouterons plus d’employés et les relierons à l’aide d’une relation appelée COLLEAGUE. Vous pouvez lier des nœuds avec des relations nommées arbitrairement.

Ajoutez trois autres employés et reliez-les à l’aide de la relation COLLEAGUE.

neo4j@neo4j> CREATE
             (:Slite {name: 'Sammy'})-[:COLLEAGUE]->
             (:Slite {name: 'Peter Jack'})-[:COLLEAGUE]->
             (:Slite {name: 'Chris Rock'});

Vous obtiendrez une sortie similaire.

0 rows
ready to start consuming query after 72 ms, results consumed after another 0 ms
Added 3 nodes, Created 2 relationships, Set 3 properties, Added 3 labels

Maintenant, créons quelques relations.

Puisque Peter et Chris travaillent dans le même département et ont les mêmes propriétés que les nœuds, nous allons créer une relation avec la colonne nom.

neo4j@neo4j> MATCH (a:Slite),(b:Slite)
             WHERE a.name = 'Peter Jack' AND b.name = 'Chris Rock'
             CREATE (a)-[r:DEPARTMENT { name: 'Designers' }]->(b)
             RETURN type(r), r.name;
+----------------------------+
| type(r)      | r.name      |
+----------------------------+
| "DEPARTMENT" | "Designers" |
+----------------------------+

1 row
ready to start consuming query after 60 ms, results consumed after another 17 ms
Created 1 relationships, Set 1 properties

Maintenant, créons une autre connexion entre Sammy et Peter puisqu’ils travaillent sur le même projet.

neo4j@neo4j> MATCH (a:Slite), (b:Slite)
             WHERE a.name = 'Peter Jack' AND b.name = 'Sammy'                                                                        CREATE (a)-[r:PROJECT { name: 'Test Project 1' }]->(b)                                                                  RETURN type(r), r.name;
+------------------------------+
| type(r)   | r.name           |
+------------------------------+
| "PROJECT" | "Test Project 1" |
+------------------------------+

1 row
ready to start consuming query after 132 ms, results consumed after another 12 ms
Created 1 relationships, Set 1 properties

Affichons toutes ces données en utilisant la requête suivante.

neo4j@neo4j> MATCH (a)-[r]->(b)
             RETURN a.name,r,b.name
             ORDER BY r;
+-------------------------------------------------------------------+
| a.name       | r                                   | b.name       |
+-------------------------------------------------------------------+
| "Sammy"      | [:COLLEAGUE]                        | "Peter Jack" |
| "Peter Jack" | [:COLLEAGUE]                        | "Chris Rock" |
| "Peter Jack" | [:DEPARTMENT {name: "Designers"}]   | "Chris Rock" |
| "Peter Jack" | [:PROJECT {name: "Test Project 1"}] | "Sammy"      |
+-------------------------------------------------------------------+

4 rows
ready to start consuming query after 99 ms, results consumed after another 5 ms

Conclusion

Cela conclut notre tutoriel sur l’installation et la configuration de Neo4j sur un serveur Ubuntu 22.04. Si vous avez des questions, posez-les dans les commentaires ci-dessous.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.