Banco de Dados · 9 min read · Dec 20, 2025
Como Instalar e Configurar o Banco de Dados Gráfico Neo4j no Ubuntu 22.04

Neo4j é um banco de dados gráfico usado para criar relacionamentos de dados. Os dados dentro de bancos de dados tradicionais são salvos em uma estrutura semelhante a uma tabela. Um banco de dados gráfico registra relacionamentos entre nós de dados. Cada nó armazena referências a todos os outros nós aos quais está conectado. Bancos de dados tradicionais não salvam dados de relacionamento diretamente, mas podem descobrir conexões pesquisando estruturas de dados com a ajuda de indexação, o que é caro e demorado. Um banco de dados gráfico como o Neo4j evita toda essa sobrecarga e pode codificar e consultar relacionamentos complexos.

Neo4j é desenvolvido pela Neo Technology. É escrito em Java e Scala e está disponível tanto em uma versão comunitária gratuita quanto em uma versão empresarial. O Neo4j usa sua própria linguagem de consulta chamada Cypher, mas consultas podem ser escritas em outros estilos.
Este tutorial ensinará você a instalar e configurar o Neo4j em um servidor Ubuntu 22.04.
Pré-requisitos
- Um servidor executando Ubuntu 22.04 com um mínimo de 1 núcleo de CPU e 2 GB de memória. Você precisará atualizar o servidor conforme os requisitos.
- Um usuário não-root com privilégios sudo.
- Certifique-se de que tudo está atualizado.
$ sudo apt update- Instale pacotes utilitários básicos. Alguns deles podem já estar instalados.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Passo 1 - Instalar Neo4j
O primeiro passo para instalar o Neo4j é adicionar a chave GPG.
$ curl -fsSL https://debian.neo4j.com/neotechnology.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/neo4j.gpg
Adicione o repositório Neo4j ao diretório de fontes APT do seu sistema.
$ 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
Para evitar o risco de atualizar para a próxima versão principal, você pode especificar as versões principal e secundária necessárias em vez de latest no comando acima.
O seguinte comando adicionará o repositório Neo4j 5.x, o que significa que você não acabará atualizando para a versão 6.x sempre que ela for lançada.
$ 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
Atualize a lista de repositórios do sistema.
$ sudo apt update
Liste as versões do Neo4j disponíveis para instalação.
$ 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
Instale a edição comunitária do Neo4j.
$ sudo apt install neo4j
Você pode instalar uma versão específica usando o seguinte comando.
$ sudo apt install neo4j=1:5.3.0
Observe que a versão inclui um componente de versão de época (1:), de acordo com a política do Debian sobre versionamento.
O Neo4j instalará automaticamente a versão JDK necessária com ele.
Ative o serviço Neo4j.
$ sudo systemctl enable neo4j
Inicie o serviço Neo4j.
$ sudo systemctl start neo4j
Verifique o status do serviço 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
Passo 2 - Testar Conexão
O Neo4j usa o Cypher Shell para trabalhar com dados.
Conecte-se ao Cypher Shell.
$ cypher-shell
Você será solicitado a fornecer um nome de usuário e uma senha. O nome de usuário e a senha padrão são neo4j. Você será solicitado a escolher uma nova senha.
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>
Isso confirma a conexão bem-sucedida ao DBMS Neo4j.
Digite :exit para sair do shell.
neo4j@neo4j> :exit
Bye!
Passo 3 - Configurar Neo4j para Acesso Remoto
Para ambientes de produção, você pode precisar confirmar o Neo4j para aceitar conexões de hosts remotos. Por padrão, o Neo4j aceita conexões apenas de localhost.
Podemos configurar o Neo4j para aceitar conexões de hosts remotos editando seu arquivo de configuração. O Neo4j armazena suas configurações no arquivo /etc/neo4j/neo4j.conf. Abra-o para edição.
$ sudo nano /etc/neo4j/neo4j.conf
Encontre a linha comentada #dbms.default_listen_address=0.0.0.0 e descomente-a removendo o hash inicial.
. . .
#***************************************************************
# Configuração do conector de rede
#***************************************************************
# Com a configuração padrão, o Neo4j aceita apenas conexões locais.
# Para aceitar conexões não locais, descomente esta linha:
server.default_listen_address=0.0.0.0
. . .
Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.
Por padrão, o valor 0.0.0.0 vinculará o Neo4j a todas as interfaces IPv4 disponíveis em seu sistema, incluindo localhost. Se você quiser limitar o Neo4j a um endereço IP específico, por exemplo, um IP de rede privada, especifique o endereço IP que é atribuído à interface de rede privada do seu servidor aqui.
Você também pode configurar o Neo4j para usar interfaces IPv6. Assim como no IPv4, você pode definir o valor default_listen_address para um endereço IPv6 específico que você usará para se comunicar com o Neo4j. Se você quiser limitar o Neo4j para usar apenas o endereço IPv6 local do seu servidor, especifique ::1, que corresponde ao localhost usando a notação IPv6.
Se você configurar o Neo4j com um endereço IPv6, não poderá se conectar com cypher-shell usando o endereço IPv6 diretamente. Em vez disso, você precisa configurar um nome DNS que resolva para o endereço IPv6 ou adicionar uma entrada no arquivo /etc/hosts do sistema remoto que mapeie o endereço para um nome. Então você poderá usar o nome do DNS ou do arquivo hosts para se conectar ao Neo4j usando IPv6 a partir do seu sistema remoto.
Por exemplo, um servidor Neo4j com um endereço IPv6 como 2001:db8::1 exigiria que o sistema remoto de conexão tivesse uma entrada /etc/hosts conforme mostrado abaixo.
2001:db8::1 your_hostname
Você pode então se conectar ao servidor a partir do sistema remoto usando o nome que você especificou, conforme mostrado abaixo.
$ cypher-shell -a 'neo4j://your_hostname:7687'
Se você restringir o Neo4j para usar o endereço localhost IPv6 de ::1, então você pode se conectar a ele localmente no próprio servidor Neo4j usando o nome ip6-localhost pré-configurado do seu arquivo /etc/hosts mostrado abaixo.
$ cypher-shell -a 'neo4j://ip6-localhost:7687'
Uma vez que você invoque cypher-shell com a URI de conexão, você será solicitado a fornecer seu nome de usuário e senha como de costume.
Passo 4 - Configurar Acesso ao Firewall (UFW)
Uma vez que você tenha habilitado conexões remotas, você pode usar o firewall para restringir o Neo4j para limitar conexões apenas de sistemas confiáveis aos quais ele pode se conectar.
O Neo4j cria dois sockets de rede, um na porta 7474 para a interface HTTP embutida e o protocolo bolt principal na porta 7687.
O Ubuntu 22.04 usa o Firewall Descomplicado (UFW) por padrão.
Configure o firewall para permitir que um host remoto confiável acesse a interface bolt usando IPv4 com o seguinte comando.
$ sudo ufw allow from 203.0.113.1 to any port 7687 proto tcp
Substitua o endereço IP do sistema remoto confiável pelo valor 203.0.113.1. Da mesma forma, você pode permitir um intervalo inteiro de rede usando o seguinte comando.
$ sudo ufw allow from 192.0.2.0/24 to any port 7687 proto tcp
Substitua a rede real pelo valor 192.0.2.0/24.
Para permitir acesso a um host remoto usando IPv6, você pode usar o seguinte comando.
$ sudo ufw allow from 2001:DB8::1/128 to any port 7687 proto tcp
Substitua o endereço IPv6 do seu sistema confiável pelo valor 2001:DB8::1/128.
Assim como no IPv4, você pode permitir um intervalo de endereços IPv6 usando o seguinte comando.
$ ufw allow from 192.0.2.0/24 to any port 7687 proto tcp
Novamente, substitua seu intervalo de rede confiável pelo intervalo de rede destacado 2001:DB8::/32.
Recarregue o firewall para aplicar as alterações.
$ sudo ufw reload
Verifique o status do 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
Passo 5 - Usar Neo4j
Conecte-se ao Neo4j usando a ferramenta cypher-shell. Você será solicitado a fornecer seu nome de usuário e senha.
$ cypher-shell
Se você configurou o Neo4j para acesso remoto, então use o seguinte comando para se conectar ao Neo4j a partir do sistema remoto.
$ cypher-shell -a 'neo4j://203.0.113.1:7687'
Aqui 203.0.113.1 é o endereço IP do servidor Neo4j.
Se você estiver usando IPv6, certifique-se de que você tenha uma entrada /etc/hosts com um nome descrito no passo 3. Então conecte-se ao servidor Neo4j da seguinte forma.
$ cypher-shell -a 'neo4j://your_hostname:7687'
Certifique-se de que your_hostname mapeia para o endereço IPv6 do seu servidor Neo4j no arquivo /etc/hosts do sistema remoto.
Vamos adicionar um nó chamado Slite e os nomes dos autores ao Neo4j. O seguinte comando criará um nó do tipo Slite, com o nome Navjot Singh.
neo4j@neo4j> CREATE (:Slite {name: 'Navjot Singh'});
Você receberá a seguinte saída.
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
Em seguida, adicionaremos mais funcionários e os relacionaremos usando um relacionamento chamado COLLEAGUE. Você pode vincular nós com relacionamentos nomeados arbitrariamente.
Adicione mais três funcionários e vincule-os usando o relacionamento COLLEAGUE.
neo4j@neo4j> CREATE
(:Slite {name: 'Sammy'})-[:COLLEAGUE]->
(:Slite {name: 'Peter Jack'})-[:COLLEAGUE]->
(:Slite {name: 'Chris Rock'});
Você receberá uma saída semelhante.
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
Agora, vamos criar alguns relacionamentos.
Como Peter e Chris trabalham no mesmo departamento e têm as mesmas propriedades como nós, criaremos um relacionamento com a coluna de nome.
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
Agora, vamos criar outra conexão entre Sammy e Peter, pois eles estão trabalhando no mesmo projeto.
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
Vamos exibir todos esses dados usando a seguinte consulta.
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
Conclusão
Isso conclui nosso tutorial sobre como instalar e configurar o Neo4j em um servidor Ubuntu 22.04. Se você tiver alguma dúvida, poste nos comentários abaixo.
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.