Datenbanken · 9 min read · Dec 20, 2025

So installieren und konfigurieren Sie die Neo4j Graphdatenbank auf Ubuntu 22.04

Neo4j ist eine Graphdatenbank, die verwendet wird, um Datenbeziehungen zu erstellen. Die Daten in traditionellen Datenbanken werden in einer tabellenähnlichen Struktur gespeichert. Eine grafische Datenbank zeichnet Beziehungen zwischen Datennodes auf. Jeder Knoten speichert Referenzen zu allen anderen Knoten, mit denen er verbunden ist. Traditionelle Datenbanken speichern Beziehungsdaten nicht direkt, können jedoch Verbindungen ermitteln, indem sie mit Hilfe von Indizes um Datenstrukturen herum suchen, was teuer und zeitaufwendig ist. Eine grafische Datenbank wie Neo4j vermeidet all diesen Overhead und kann komplexe Beziehungen kodieren und abfragen.

Wie Daten in einer grafischen Datenbank gespeichert werden

Neo4j wird von Neo Technology entwickelt. Es ist in Java und Scala geschrieben und sowohl in einer kostenlosen Community-Version als auch in einer Enterprise-Version erhältlich. Neo4j verwendet seine eigene Abfragesprache namens Cypher, aber Abfragen können auch in anderen Stilen geschrieben werden.

Dieses Tutorial zeigt Ihnen, wie Sie Neo4j auf einem Ubuntu 22.04-Server installieren und konfigurieren.

Voraussetzungen

  • Ein Server, der Ubuntu 22.04 mit mindestens 1 CPU-Kern und 2 GB RAM ausführt. Sie müssen den Server gemäß den Anforderungen aktualisieren.
  • Ein Nicht-Root-Benutzer mit Sudo-Rechten.
  • Stellen Sie sicher, dass alles aktualisiert ist.
  • $ sudo apt update
  • Installieren Sie grundlegende Dienstprogramme. Einige davon sind möglicherweise bereits installiert. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y

Schritt 1 - Neo4j installieren

Der erste Schritt zur Installation von Neo4j besteht darin, den GPG-Schlüssel hinzuzufügen.

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

Fügen Sie das Neo4j-Repository zum APT-Quellverzeichnis Ihres Systems hinzu.

$ 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

Um das Risiko eines Upgrades auf die nächste Hauptversion zu vermeiden, können Sie die erforderlichen Haupt- und Nebenversionen anstelle von latest im obigen Befehl angeben.

Der folgende Befehl fügt das Neo4j 5.x-Repository hinzu, was bedeutet, dass Sie nicht auf die 6.x-Version upgraden, wann immer sie veröffentlicht wird.

$ 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

Aktualisieren Sie die Liste der Systemrepositories.

$ sudo apt update

Listen Sie die verfügbaren Neo4j-Versionen zur Installation auf.

$ 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

Installieren Sie die Neo4j Community-Edition.

$ sudo apt install neo4j

Sie können eine bestimmte Version mit dem folgenden Befehl installieren.

$ sudo apt install neo4j=1:5.3.0

Beachten Sie, dass die Version eine Epoch-Version-Komponente (1:) enthält, gemäß der Debian-Richtlinie zur Versionierung.

Neo4j wird automatisch die erforderliche JDK-Version mit installieren.

Aktivieren Sie den Neo4j-Dienst.

$ sudo systemctl enable neo4j

Starten Sie den Neo4j-Dienst.

$ sudo systemctl start neo4j

Überprüfen Sie den Status des Neo4j-Dienstes.

$ sudo systemctl status neo4j
? neo4j.service - Neo4j Graph Database
     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

Schritt 2 - Verbindung testen

Neo4j verwendet die Cypher-Shell zur Arbeit mit Daten.

Verbinden Sie sich mit der Cypher-Shell.

$ cypher-shell

Sie werden nach einem Benutzernamen und einem Passwort gefragt. Der Standardbenutzername und das Standardpasswort sind neo4j. Sie werden aufgefordert, ein neues Passwort zu wählen.

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>

Dies bestätigt die erfolgreiche Verbindung zur Neo4j DBMS.

Geben Sie :exit ein, um die Shell zu verlassen.

neo4j@neo4j> :exit

Bye!

Schritt 3 - Neo4j für den Remote-Zugriff konfigurieren

Für Produktionsumgebungen müssen Sie möglicherweise Neo4j so konfigurieren, dass es Verbindungen von Remote-Hosts akzeptiert. Standardmäßig akzeptiert Neo4j nur Verbindungen von localhost.

Wir können Neo4j so konfigurieren, dass es Verbindungen von Remote-Hosts akzeptiert, indem wir die Konfigurationsdatei bearbeiten. Neo4j speichert seine Einstellungen in der Datei /etc/neo4j/neo4j.conf. Öffnen Sie sie zur Bearbeitung.

$ sudo nano /etc/neo4j/neo4j.conf

Suchen Sie die auskommentierte Zeile #dbms.default_listen_address=0.0.0.0 und entfernen Sie das führende Hash, um sie zu aktivieren.

. . .
#***************************************************************
# Netzwerkconnector-Konfiguration
#***************************************************************

# Mit der Standardkonfiguration akzeptiert Neo4j nur lokale Verbindungen.
# Um nicht-lokale Verbindungen zu akzeptieren, kommentieren Sie diese Zeile aus:
server.default_listen_address=0.0.0.0
. . .

Speichern Sie die Datei, indem Sie Ctrl + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Standardmäßig bindet der Wert 0.0.0.0 Neo4j an alle verfügbaren IPv4-Schnittstellen auf Ihrem System, einschließlich localhost. Wenn Sie Neo4j auf eine bestimmte IP-Adresse beschränken möchten, z. B. eine private Netzwerk-IP, geben Sie hier die IP-Adresse an, die Ihrer privaten Netzwerkschnittstelle zugewiesen ist.

Sie können Neo4j auch so konfigurieren, dass es IPv6-Schnittstellen verwendet. Wie bei IPv4 können Sie den Wert default_listen_address auf eine bestimmte IPv6-Adresse setzen, die Sie zur Kommunikation mit Neo4j verwenden möchten. Wenn Sie Neo4j auf die lokale IPv6-Adresse Ihres Servers beschränken möchten, geben Sie ::1 an, was localhost in IPv6-Notation entspricht.

Wenn Sie Neo4j mit einer IPv6-Adresse konfigurieren, können Sie sich nicht direkt mit cypher-shell über die IPv6-Adresse verbinden. Stattdessen müssen Sie entweder einen DNS-Namen konfigurieren, der auf die IPv6-Adresse aufgelöst wird, oder einen Eintrag in der /etc/hosts-Datei des Remote-Systems hinzufügen, der die Adresse einem Namen zuordnet. Dann können Sie den DNS- oder Hosts-Dateinamen verwenden, um sich von Ihrem Remote-System aus mit Neo4j über IPv6 zu verbinden.

Ein Neo4j-Server mit einer IPv6-Adresse wie 2001:db8::1 würde erfordern, dass das Remote-verbundene System einen /etc/hosts-Eintrag wie unten gezeigt hat.

2001:db8::1 your_hostname

Sie können sich dann von dem Remote-System aus mit dem Namen verbinden, den Sie wie unten gezeigt angegeben haben.

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

Wenn Sie Neo4j auf die IPv6-Localhost-Adresse von ::1 beschränken, können Sie sich lokal auf dem Neo4j-Server selbst mit dem vorkonfigurierten ip6-localhost-Namen aus Ihrer /etc/hosts-Datei wie unten gezeigt verbinden.

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

Sobald Sie cypher-shell mit der Verbindungs-URI aufrufen, werden Sie wie gewohnt nach Ihrem Benutzernamen und Passwort gefragt.

Schritt 4 - Firewall-Zugriff konfigurieren (UFW)

Nachdem Sie Remote-Verbindungen aktiviert haben, können Sie die Firewall verwenden, um Neo4j so zu beschränken, dass Verbindungen nur von vertrauenswürdigen Systemen akzeptiert werden, mit denen es sich verbinden kann.

Neo4j erstellt zwei Netzwerk-Sockets, einen auf Port 7474 für die integrierte HTTP-Schnittstelle und das Haupt-Bolt-Protokoll auf Port 7687.

Ubuntu 22.04 verwendet standardmäßig die Uncomplicated Firewall (UFW).

Konfigurieren Sie die Firewall, um einem vertrauenswürdigen Remote-Host den Zugriff auf die bolt-Schnittstelle über IPv4 mit dem folgenden Befehl zu ermöglichen.

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

Ersetzen Sie die IP-Adresse des vertrauenswürdigen Remote-Systems durch den Wert 203.0.113.1. Ebenso können Sie einen gesamten Netzwerkbereich mit dem folgenden Befehl zulassen.

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

Ersetzen Sie den tatsächlichen Netzwerkbereich durch den Wert 192.0.2.0/24.

Um einem Remote-Host über IPv6 den Zugriff zu ermöglichen, können Sie den folgenden Befehl verwenden.

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

Ersetzen Sie die IPv6-Adresse Ihres vertrauenswürdigen Systems durch den Wert 2001:DB8::1/128.

Wie bei IPv4 können Sie einen Bereich von IPv6-Adressen mit dem folgenden Befehl zulassen.

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

Ersetzen Sie erneut Ihren vertrauenswürdigen Netzwerkbereich durch den hervorgehobenen 2001:DB8::/32-Netzwerkbereich.

Laden Sie die Firewall neu, um die Änderungen anzuwenden.

$ sudo ufw reload

Überprüfen Sie den Status der Firewall.

$ 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

Schritt 5 - Verwenden Sie Neo4j

Verbinden Sie sich mit Neo4j über das cypher-shell-Tool. Sie werden nach Ihrem Benutzernamen und Passwort gefragt.

$ cypher-shell

Wenn Sie Neo4j für den Remote-Zugriff konfiguriert haben, verwenden Sie den folgenden Befehl, um sich von dem Remote-System aus mit Neo4j zu verbinden.

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

Hier ist 203.0.113.1 die IP-Adresse des Neo4j-Servers.

Wenn Sie IPv6 verwenden, stellen Sie sicher, dass Sie einen /etc/hosts-Eintrag mit einem Namen haben, der in Schritt 3 beschrieben ist. Verbinden Sie sich dann wie folgt mit dem Neo4j-Server.

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

Stellen Sie sicher, dass your_hostname auf die IPv6-Adresse Ihres Neo4j-Servers in der /etc/hosts-Datei des Remote-Systems verweist.

Lassen Sie uns einen Knoten namens Slite und die Namen der Autoren zu Neo4j hinzufügen. Der folgende Befehl erstellt einen Knoten vom Typ Slite mit dem Namen Navjot Singh.

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

Sie erhalten die folgende Ausgabe.

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

Als nächstes fügen wir weitere Mitarbeiter hinzu und verknüpfen sie mit einer Beziehung namens COLLEAGUE. Sie können Knoten mit beliebig benannten Beziehungen verknüpfen.

Fügen Sie drei weitere Mitarbeiter hinzu und verknüpfen Sie sie mit der Beziehung COLLEAGUE.

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

Sie erhalten eine ähnliche Ausgabe.

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

Jetzt lassen Sie uns einige Beziehungen erstellen.

Da Peter und Chris in derselben Abteilung arbeiten und dieselben Eigenschaften wie Knoten haben, erstellen wir eine Beziehung mit der Spalte Name.

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

Jetzt lassen Sie uns eine weitere Verbindung zwischen Sammy und Peter erstellen, da sie am selben Projekt arbeiten.

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

Lassen Sie uns all diese Daten mit der folgenden Abfrage anzeigen.

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

Fazit

Dies schließt unser Tutorial zur Installation und Konfiguration von Neo4j auf einem Ubuntu 22.04-Server ab. Wenn Sie Fragen haben, posten Sie diese bitte in die Kommentare unten.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.