Configurando Spring Boot com PostgreSQL no ambiente Linux: Passo a passo
Tags: springboot, linux, postgres, beginners
Published: 2024-07-10 13:43:28

Neste guia, vamos juntos desbravar o processo de configurar e conectar uma aplicação Spring Boot ao PostgreSQL no Linux. O que temos pela frente:

1. Instalar o PostgreSQL no Linux Mint (Ubuntu) 
2. Criar um novo usuário e senha no PostgreSQL
3. Criar uma base de dados 
4. Dar acesso à base para o usuário criado 
5. Fazer a mágica acontecer: configurar o Spring Boot para se comunicar com nossa base

---

## 1. Instalando o PostgreSQL no Linux Mint (Ubuntu)

Abra o terminal e execute os seguintes comandos:

a) Atualize a lista de pacotes:

`sudo apt update`

b) Instale o PostgreSQL com o pacote contrib:

`sudo apt install postgresql postgresql-contrib`

c) Instale o cliente PostgreSQL:

`sudo apt-get install postgresql-client`

---

## 2. Criar um novo usuário e senha no PostgreSQL

a) Acesse a conta postgres no terminal:

`sudo -i -u postgres`

b) Entre no prompt do PostgreSQL:

`psql`

c) No prompt do PostgreSQL, crie o novo usuário:

`CREATE USER ‘nome-usuario’ WITH ENCRYPTED PASSWORD 'suasenha';`


**Atenção:**
    

- Anote o nome de usuário e senha, você precisará deles para configurar o Spring Boot depois
- Substitua 'nome_usuario' pelo nome desejado para o seu usuário 
- Troque 'sua_senha' por uma senha forte de sua escolha 

**Dicas:**

- Para sair do prompt PostgreSQL, digite: \q 
- Para sair da conta postgres, digite: exit

---

## 3. Criando uma base de dados
 
a) Acesse o prompt do PostgreSQL (veja o item 2 para instruções de acesso)

b) No prompt, crie a nova base de dados:

`CREATE DATABASE nome-base-de-dados;`

**Importante:**
    • Substitua 'nome-base-de-dados' pelo nome que você deseja dar à sua base 

**Dica:**
    • Para verificar se a base foi criada, use o comando: \l

---

## 4. Concedendo acesso à base de dados para o usuário criado

a) No prompt do PostgreSQL (veja o item 2 para instruções de acesso), execute:

`GRANT ALL PRIVILEGES ON DATABASE nome_base_de_dados TO nome_usuario;`

**Importante:**

- Substitua 'nome_base_de_dados' pelo nome da base que você criou no passo 3
- Substitua 'nome_usuario' pelo nome do usuário que você criou no passo 2

---

  

## 5. Configurando o Spring Boot para se comunicar com nossa base de dados

a) Inicialize uma aplicação Spring Boot:

- Acesse https://start.spring.io/
- O site já traz como padrão projeto Maven e linguagem Java
- Ajuste os metadados do projeto conforme necessário (ou deixe como está, caso esteja apenas testando)

b) Adicione as seguintes dependências:

- Spring Web
- Spring Data JPA
- PostgreSQL Driver
- Validation

Para adicionar: Clique em "ADD" na seção de dependências e use a barra de busca

c) Gere e baixe o projeto:

- Clique no botão "GENERATE"
- Baixe e descompacte o arquivo ZIP gerado

d) Abra o projeto na sua IDE:

- Importe o arquivo pom.xml como um projeto (ex: no IntelliJ IDEA)

e) Na estrutura do projeto, localize o arquivo application.properties:

- Geralmente em src/main/resources/
 
![localização do arquivo aplication.properties](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/alcvqqobog3ldbre6r1l.png)

f) Configure a conexão com o banco de dados:

- Abra application.properties e adicione:

```
spring.datasource.url=jdbc:postgresql://localhost:5432/nome-bando-de-dados
spring.datasource.username=nome-de-usuário-criado-no-passo-2
spring.datasource.password=senha-criada-no-passo-2
spring.jpa.hibernate.ddl-auto=update

spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true

```

Após configurar o application.properties, o próximo passo é garantir que o PostgreSQL esteja rodando e pronto para aceitar conexões. Para isso, abra o terminal e execute o comando:

`sudo systemctl start postgresql.service`

Pronto! Só rodar o projeto na sua IDE e a conexão deve acontecer.

Dica de diagnóstico:

Se encontrar problemas de conexão, verifique:

- Se o serviço PostgreSQL está ativo (use `sudo systemctl status postgresql.service`)
- Se as credenciais no application.properties estão corretas
- Se o usuário tem as permissões necessárias na base de dados