Executando verificação de segurança...
9

Guia de como configurar PostgreSQL

Instalação do PostgreSQL

Primeiramente, instalamos o PostgreSQL na nossa distribuição. No meu caso, estou usando Ubuntu-22.04, então a instalação será feita utilizando APT. Caso esteja usando outra distribuição, recomendo pesquisar como instalar o PostgreSQL utilizando o gerenciador de pacotes da distribuição em questão.

sudo apt update

sudo apt install postgresql postgresql-contrib
sudo apt install libpq-dev

Com os comandos abaixo, você pode validar se o PostgreSQL foi instalado corretamente:

sudo service postgresql status

Caso o serviço não esteja em execução, utilize o comando abaixo para iniciá-lo:

sudo service postgresql start

Porta

Precisamos descobrir em qual porta o PostgreSQL está rodando. Por padrão, ele utiliza a porta 5432. No entanto, pode acontecer de, por algum motivo, outra aplicação estar utilizando essa porta, fazendo com que o PostgreSQL utilize uma porta diferente da padrão. Portanto é necessário validar em qual porta o serviço está sendo executado.

sudo ss -lntp | grep 5432

~> LISTEN 0 244 127.0.0.1 5432 0.0.0.0:* users(("postgres", pid=258, fd=5))

Configurando o PostgreSQL

Com o comando abaixo, acessamos terminal do PostgreSQL:

sudo -u postgres psql

Agora aprenderemos a listar, criar e gerenciar roles e privilégios.

Começamos listando nossos usuários e, inicialmente, teremos apenas um usuário chamado postgres com todas as permissões (superuser).

// Comando usado para listar os usuarios
\\du

// return

                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

Observação: Para fins de prática, não é obrigatório criar um novo usuário. Porém, realizamos esse processo por boas práticas de segurança, Caso futuramente você utilize esse banco em uma aplicação, não é recomendado utilizar diretamente o usuário postgres, pois ele possui privilégios de superuser.

Usuários com privilégios elevados violam o Principle of Least Privilege (Princípio do Menor Privilégio), podendo aumentar os riscos de vulnerabilidades, como SQL Injection ou outras falhas de segurança. Portanto, mesmo em ambientes de estudo, é recomendado criar um usuário com permissões limitadas para acessar o banco de dados.

Agora que aprendemos a listar nossos usuários, iremos aprender a criar um novo usuários e aplicar as permissões corretas nele.

CREATE ROLE **user_teste** WITH LOGIN PASSWORD 'password' CREATEDB CREATEROLE;

Agora criamos um banco e tornamos nosso usuário dono do banco e assim o dev tem controle total do banco, sem precisar de superuser.

**CREATE DATABASE users_db OWNER user_teste;**

Aqui acontecem duas coisas:

  1. O banco users_db é criado;
  2. O usuário dev vira o owner (dono) desse banco.

Ser dono do banco significa que o dev pode:

  • alterar configurações do banco;
  • criar schemas;
  • dropar o banco;
  • gerenciar permissões dentro dele.

Mas atenção: Isso não significa automaticamente controle sobre todos os objetos dentro do banco, porque no PostgreSQL existem níveis de permissão.

Server
 └── Database
      └── Schema
           └── Tables
           └── Views
           └── Functions

Mesmo sendo dono do database, permissões dentro do schema podem limitar ações.

Depois de realizarmos esses passos com atenção, agora iremos conectar no nosso banco e aplicar as permissões nos schemas

No terminal digitamos o comando abaixo para acessar o nosso database.

\\c users_db

Agora que estamos conectados ao nosso banco de dados podemos aplicar nossas permissões no schema.

GRANT ALL ON SCHEMA public TO user_teste;

Esse comando é responsável por permite que o user_teste possa:

  • USAGE ~> Acessar o schema
  • CREATE ~> Criar objetos dentro dele

O que é um schema?

Um schema é como se fosse uma pasta lógica dentro do banco.

Exemplo:

users_db
 └── public
      ├── users
      ├── orders
      └── products

Por padrão, o PostgreSQL cria o schema:

public

Conclusão

Com esses passos, configuramos corretamente um ambiente básico de PostgreSQL para desenvolvimento.

Durante o processo aprendemos a:

  • instalar o PostgreSQL na distribuição Linux;
  • verificar se o serviço está em execução;
  • identificar a porta utilizada pelo banco;
  • acessar o terminal interativo do PostgreSQL (psql);
  • listar roles existentes;
  • criar um novo usuário com permissões específicas;
  • criar um banco de dados e definir seu proprietário;
  • compreender a estrutura hierárquica do PostgreSQL (Database → Schema → Tables);
  • conceder permissões em schemas.

Seguindo essas boas práticas, evitamos utilizar o usuário superuser (postgres) diretamente em aplicações, adotando o Princípio do Menor Privilégio, o que torna o ambiente mais seguro e próximo de cenários reais de produção.

Referências

Carregando publicação patrocinada...
1

alguem ai teria dicas de particionamento de tabelas?
um amigo meu tem uma tabela fato de 100gb, o proprio tamanho fisico da tabela esta causando problemas de desenpenho por vacuum e indexacao;
parece que no postgres soh poderia usar como criterio de particao, uma coluna que faz parte da chave primaria.. coisa que no oracle eh dinamico;