Базы данных · 8 min read · Dec 20, 2025
Как установить и настроить графовую базу данных Neo4j на Ubuntu 22.04

Neo4j — это графовая база данных, используемая для создания отношений между данными. Данные в традиционных базах данных сохраняются в табличной структуре. Графовая база данных фиксирует отношения между узлами данных. Каждый узел хранит ссылки на все другие узлы, с которыми он связан. Традиционные базы данных не сохраняют данные об отношениях напрямую, но могут выяснить связи, исследуя структуры данных с помощью индексации, что дорого и требует много времени. Графовая база данных, такая как Neo4j, избегает всех этих накладных расходов и может кодировать и запрашивать сложные отношения.

Neo4j разработан компанией Neo Technology. Он написан на Java и Scala и доступен как в бесплатной версии для сообщества, так и в корпоративной версии. Neo4j использует собственный язык запросов, называемый Cypher, но запросы могут быть написаны и в других стилях.
Этот учебник научит вас, как установить и настроить Neo4j на сервере Ubuntu 22.04.
Предварительные требования
- Сервер с установленной Ubuntu 22.04 с минимум 1 ядром ЦП и 2 ГБ памяти. Вам нужно будет обновить сервер в соответствии с требованиями.
- Непользователь с правами sudo.
- Убедитесь, что все обновлено.
$ sudo apt update- Установите базовые утилиты. Некоторые из них могут быть уже установлены.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Шаг 1 - Установка Neo4j
Первый шаг к установке Neo4j — добавление GPG-ключа.
$ curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg
Добавьте репозиторий Neo4j в каталог источников APT вашей системы.
$ 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
Чтобы избежать риска обновления до следующей основной версии, вы можете указать основные и второстепенные версии, необходимые вместо latest в приведенной выше команде.
Следующая команда добавит репозиторий Neo4j 5.x, что означает, что вы не обновитесь до версии 6.x, когда она будет выпущена.
$ 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
Обновите список репозиториев системы.
$ sudo apt update
Список доступных для установки версий Neo4j.
$ 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
Установите версию Neo4j Community.
$ sudo apt install neo4j
Вы можете установить конкретную версию, используя следующую команду.
$ sudo apt install neo4j=1:5.3.0
Обратите внимание, что версия включает компонент версии эпохи (1:), в соответствии с политикой Debian по версионированию.
Neo4j автоматически установит необходимую версию JDK вместе с ним.
Включите службу Neo4j.
$ sudo systemctl enable neo4j
Запустите службу Neo4j.
$ sudo systemctl start neo4j
Проверьте статус службы Neo4j.
$ 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
Шаг 2 - Проверка подключения
Neo4j использует Cypher Shell для работы с данными.
Подключитесь к Cypher Shell.
$ cypher-shell
Вам будет предложено ввести имя пользователя и пароль. Имя пользователя и пароль по умолчанию — neo4j. Вам будет предложено выбрать новый пароль.
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>
Это подтверждает успешное подключение к СУБД Neo4j.
Введите :exit, чтобы выйти из оболочки.
neo4j@neo4j> :exit
Bye!
Шаг 3 - Настройка Neo4j для удаленного доступа
Для производственных сред вам может потребоваться подтвердить, что Neo4j принимает подключения от удаленных хостов. По умолчанию Neo4j принимает подключения только от localhost.
Мы можем настроить Neo4j для принятия подключений от удаленных хостов, отредактировав его файл конфигурации. Neo4j хранит свои настройки в файле /etc/neo4j/neo4j.conf. Откройте его для редактирования.
$ sudo nano /etc/neo4j/neo4j.conf
Найдите закомментированную строку #dbms.default_listen_address=0.0.0.0 и раскомментируйте ее, удалив ведущий хеш.
. . .
#***************************************************************
# Конфигурация сетевого соединителя
#***************************************************************
# С учетом конфигурации по умолчанию Neo4j принимает только локальные подключения.
# Чтобы принимать не локальные подключения, раскомментируйте эту строку:
server.default_listen_address=0.0.0.0
. . .
Сохраните файл, нажав Ctrl + X и введя Y, когда будет предложено.
По умолчанию значение 0.0.0.0 будет привязывать Neo4j ко всем доступным интерфейсам IPv4 на вашей системе, включая localhost. Если вы хотите ограничить Neo4j определенным IP-адресом, например, IP-адресом частной сети, укажите IP-адрес, который назначен интерфейсу частной сети вашего сервера.
Вы также можете настроить Neo4j для использования интерфейсов IPv6. Как и в случае с IPv4, вы можете установить значение default_listen_address на конкретный IPv6-адрес, который вы будете использовать для связи с Neo4j. Если вы хотите ограничить Neo4j только для использования локального IPv6-адреса вашего сервера, укажите ::1, что соответствует localhost в нотации IPv6.
Если вы настроите Neo4j с IPv6-адресом, вы не сможете подключиться с помощью cypher-shell, используя IPv6-адрес напрямую. Вместо этого вам нужно либо настроить DNS-имя, которое разрешается в IPv6-адрес, либо добавить запись в файл /etc/hosts удаленной системы, которая сопоставляет адрес с именем. Затем вы сможете использовать имя DNS или имя файла hosts для подключения к Neo4j с использованием IPv6 из вашей удаленной системы.
Например, сервер Neo4j с IPv6-адресом, таким как 2001:db8::1, потребует от удаленной подключающей системы наличия записи /etc/hosts, как показано ниже.
2001:db8::1 your_hostname
Затем вы сможете подключиться к серверу из удаленной системы, используя имя, которое вы указали, как показано ниже.
$ cypher-shell -a 'neo4j://your_hostname:7687'
Если вы ограничите Neo4j использовать локальный IPv6-адрес ::1, то сможете подключиться к нему локально на самом сервере Neo4j, используя предустановленное имя ip6-localhost из вашего файла /etc/hosts, показанного ниже.
$ cypher-shell -a 'neo4j://ip6-localhost:7687'
Как только вы вызовете cypher-shell с URI подключения, вам будет предложено ввести ваше имя пользователя и пароль, как обычно.
Шаг 4 - Настройка доступа через брандмауэр (UFW)
После того как вы включили удаленные подключения, вы можете использовать брандмауэр для ограничения Neo4j, чтобы ограничить подключения только от доверенных систем, с которыми он может подключаться.
Neo4j создает два сетевых сокета, один на порту 7474 для встроенного HTTP-интерфейса и основной протокол bolt на порту 7687.
Ubuntu 22.04 по умолчанию использует Uncomplicated Firewall (UFW).
Настройте брандмауэр, чтобы разрешить доверенному удаленному хосту доступ к интерфейсу bolt с использованием IPv4, используя следующую команду.
$ sudo ufw allow from 203.0.113.1 to any port 7687 proto tcp
Замените IP-адрес доверенной удаленной системы на значение 203.0.113.1. Аналогично, вы можете разрешить целый диапазон сети, используя следующую команду.
$ sudo ufw allow from 192.0.2.0/24 to any port 7687 proto tcp
Замените фактическую сеть на значение 192.0.2.0/24.
Чтобы разрешить доступ к удаленному хосту с использованием IPv6, вы можете использовать следующую команду.
$ sudo ufw allow from 2001:DB8::1/128 to any port 7687 proto tcp
Замените IPv6-адрес вашей доверенной системы на значение 2001:DB8::1/128.
Как и в случае с IPv4, вы можете разрешить диапазон IPv6-адресов, используя следующую команду.
$ ufw allow from 192.0.2.0/24 to any port 7687 proto tcp
Снова замените ваш доверенный диапазон сети на выделенный диапазон сети 2001:DB8::/32.
Перезагрузите брандмауэр, чтобы применить изменения.
$ sudo ufw reload
Проверьте статус брандмауэра.
$ 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
Шаг 5 - Использование Neo4j
Подключитесь к Neo4j, используя инструмент cypher-shell. Вам будет предложено ввести ваше имя пользователя и пароль.
$ cypher-shell
Если вы настроили Neo4j для удаленного доступа, используйте следующую команду для подключения к Neo4j из удаленной системы.
$ cypher-shell -a 'neo4j://203.0.113.1:7687'
Здесь 203.0.113.1 — это IP-адрес сервера Neo4j.
Если вы используете IPv6, убедитесь, что у вас есть запись /etc/hosts с именем, описанным в шаге 3. Затем подключитесь к серверу Neo4j следующим образом.
$ cypher-shell -a 'neo4j://your_hostname:7687'
Убедитесь, что your_hostname сопоставляется с IPv6-адресом вашего сервера Neo4j в файле /etc/hosts удаленной системы.
Давайте добавим узел под названием Slite и имена авторов в Neo4j. Следующая команда создаст узел типа Slite с именем Navjot Singh.
neo4j@neo4j> CREATE (:Slite {name: 'Navjot Singh'});
Вы получите следующий вывод.
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
Далее мы добавим еще сотрудников и свяжем их с помощью отношения под названием COLLEAGUE. Вы можете связывать узлы произвольно названными отношениями.
Добавьте еще трех сотрудников и свяжите их с помощью отношения COLLEAGUE.
neo4j@neo4j> CREATE
(:Slite {name: 'Sammy'})-[:COLLEAGUE]->
(:Slite {name: 'Peter Jack'})-[:COLLEAGUE]->
(:Slite {name: 'Chris Rock'});
Вы получите аналогичный вывод.
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
Теперь давайте создадим некоторые отношения.
Поскольку Питер и Крис работают в одном отделе и имеют одинаковые свойства как узлы, мы создадим отношение с именем столбца.
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
Теперь давайте создадим еще одно соединение между Сэмми и Петером, поскольку они работают над одним проектом.
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
Давайте отобразим все эти данные с помощью следующего запроса.
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
Заключение
Это завершает наш учебник по установке и настройке Neo4j на сервере Ubuntu 22.04. Если у вас есть вопросы, оставьте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.