Série De SQL Server para PostgreSQL · #1

Instalação sem wizard e sem SSMS

Um guia para quem já conhece SQL Server no Windows e vai instalar a versão mais recente do PostgreSQL no Linux pela primeira vez. Nesta série, comparamos lado a lado como cada banco resolve o mesmo problema. São dois bancos excelentes, com filosofias diferentes.

Renato Siqueira · Time PostgreSQL da Power Tuning

Para iniciar uma série de “de-para” do SQL Server para Postgres, nada melhor do que começar pelo começo: a instalação.

Se você vem do mundo SQL Server, sua ideia de “instalar um banco de dados” é: baixar um executável ou a ISO do SQL Server (o executável geralmente baixa a ISO completa por trás dos panos), clicar em Next algumas vezes, escolher o collation, esperar a barra de progresso e abrir o SSMS. Tudo dentro de uma interface gráfica que facilita e abstrai detalhes da instalação.

No Linux esse conforto visual não existe. A interface gráfica sai de cena e entra o terminal, o gerenciador de pacotes e um comando chamado initdb que faz a instalação do Postgres.

Este post mostra essa diferença passo a passo, já instalando a versão mais recente, o PostgreSQL 18, e, como bônus, uma segunda forma de instalar via pg_createcluster, útil quando você precisa de múltiplas versões ou instâncias do Postgres na mesma máquina. Os exemplos usam Debian, mas o método é facilmente adaptável para outras distribuições Linux de sua preferência.

SQL Server (Windows)

1. Baixar o instalador (.exe)

2. Abrir o Wizard gráfico

(Next, Next, Next…)

3. Configurar instância

(collation, contas, portas)

4. Wizard cria os data files

(master, model, msdb…)

5. Serviço já roda

Abre o SSMS e conecta

PostgreSQL (Linux)

1. sudo apt update

2. sudo apt install postgresql

3. Pacote roda o initdb

(cria o cluster de dados)

4. systemd inicia o serviço

(postgresql.service)

5. sudo -u postgres psql

Conecta via terminal

O Wizard substitui, em uma única tela, o que no Linux é: gerenciador de pacotes + initdb + systemd

Fluxo de instalação: SQL Server Wizard vs apt/initdb no Linux

Como o SQL Server te acostumou a pensar

Quando você instala o SQL Server no Windows, o instalador faz tudo em sequência, numa única ferramenta:

  1. Baixa e abre o setup gráfico.
  2. Você escolhe o tipo de instalação (standalone, failover cluster, etc).
  3. Configura a instância (nome, collation, contas de serviço, paths para dados, log, backup, dentre outras configurações…).
  4. O próprio wizard cria os bancos de sistema (master, model, msdb, tempdb).
  5. Ao final, o serviço SQL Server (MSSQLSERVER) já está rodando, registrado no Windows Services, e você abre o SSMS para conectar.

Tudo isso acontece atrás de uma interface só. O wizard esconde três etapas que, no Linux, são ferramentas separadas: instalar o binário, criar a estrutura de dados e registrar o serviço no sistema operacional.

A filosofia Linux: pacotes + serviços, cada um faz uma coisa

No Linux, a instalação de qualquer software segue a filosofia Unix: ferramentas pequenas, cada uma responsável por uma parte do processo. Para o PostgreSQL, isso se divide em três “atores” principais:

  • O gerenciador de pacotes (apt, no caso do Ubuntu/Debian), baixa e instala os binários, parecido com o que o .exe faz no Windows.
  • O initdb, cria a estrutura de dados inicial (o “cluster” do Postgres), algo equivalente ao passo em que o wizard do SQL Server gera master, model e msdb.
  • O systemd, o gerenciador de serviços do Linux, equivalente ao Windows Services, responsável por subir e manter o processo do banco rodando.

No Ubuntu/Debian, o pacote postgresql já encapsula essas três etapas para você, parecido com o wizard, só que via linha de comando.

Passo a passo: instalando o PostgreSQL 18 via apt

Um detalhe importante: os repositórios padrão do Debian/Ubuntu costumam trazer uma versão mais antiga do Postgres (ex.: 16 ou 17), não a mais recente. Para instalar a versão 18, é preciso adicionar o repositório oficial mantido pelo PGDG (PostgreSQL Global Development Group) antes de instalar o pacote.

# 1. Instala dependências e adiciona o repositório oficial do PGDG
sudo apt install -y postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh# 2. Atualiza a lista de pacotes, agora incluindo o repositório do PGDG
sudo apt update

# 3. Instala o PostgreSQL 18 (o pacote já roda o initdb e registra o serviço no systemd)
sudo apt install postgresql-18

# 4. Confirma que o serviço está rodando
sudo systemctl status postgresql

Depois desses comandos, o Postgres 18 já está instalado, com o cluster de dados criado e o serviço ativo, equivalente a terminar o wizard do SQL Server e ver o serviço “Running” no Services.

Por que adicionar um repositório?É parecido com baixar o instalador de uma versão específica do SQL Server direto do site da Microsoft, em vez de usar uma mídia antiga: o repositório do sistema operacional nem sempre acompanha o ritmo de lançamentos do Postgres, então o PGDG existe justamente para disponibilizar as versões mais novas assim que saem.

O que é o initdb, afinal?

No pacote do Ubuntu/Debian, o initdb roda automaticamente durante a instalação, então você nem percebe ele acontecendo. Mas vale entender o que ele faz:

initdb -D /var/lib/postgresql/18/main

O initdb é o comando que:

  • Cria o diretório de dados (o data directory), com os arquivos físicos do banco, similar ao data path padrão informado no setup do Wizard do SQL Server.
  • Cria os bancos de sistema postgres, template0 e template1, equivalente ao master/model do SQL Server.
  • Define o superusuário inicial (por padrão, um usuário de sistema chamado postgres).
  • Gera os arquivos de configuração postgresql.conf e pg_hba.conf.

É o passo que, no wizard do SQL Server, fica escondido atrás da barra “Configurando instância”. No Linux, ele vira visível quando você precisa criar um segundo cluster na mesma máquina, e é aí que entra a próxima ferramenta.


Indo além do apt install: pg_createcluster

apt install postgresql já entrega um cluster pronto, com o initdb rodando por baixo dos panos. Mas o Debian/Ubuntu tem uma camada extra, o pacote postgresql-common, para gerenciar múltiplos clusters na mesma máquina, algo parecido com instâncias nomeadas do SQL Server (SERVIDOR\INSTANCIA1, SERVIDOR\INSTANCIA2).

É aqui que entra o pg_createcluster: chama o initdb, integra o resultado ao systemd, escolhe portas automaticamente e organiza tudo no padrão de diretórios do Debian.

Por que isso existe?Porque é comum ter várias versões do Postgres (16, 17, 18…) ou ambientes isolados na mesma máquina, cada “cluster” é um conjunto independente de dados, portas e configuração, contanto que cada um rode em uma porta diferente (igual no SQL Server).

Instalando apenas os binários, sem criar cluster automaticamente

# Instala só o motor do Postgres, sem subir nenhum cluster ainda
sudo apt install postgresql-18 –no-install-recommends

Criando um cluster manualmente com pg_createcluster

# Sintaxe: pg_createcluster <versão> <nome_do_cluster>
sudo pg_createcluster 18 main –start# Criando um SEGUNDO cluster, com outro nome, na mesma máquina
sudo pg_createcluster 18 secundario –start -p 5433

Repare no parâmetro -p 5433: como o primeiro cluster já ocupa a porta padrão 5432 (equivalente à porta 1433 do SQL Server), o segundo precisa de uma porta diferente.

Comandos de gerência dos clusters

# Lista todos os clusters instalados, versão, porta e status
pg_lsclusters# Para, inicia ou reinicia um cluster específico
sudo pg_ctlcluster 18 main stop
sudo pg_ctlcluster 18 main start
sudo pg_ctlcluster 18 main restart

# Remove um cluster (cuidado: apaga os dados)
sudo pg_dropcluster 18 secundario –stop

O pg_lsclusters, em particular, é o comando que mais lembra a experiência de abrir o SQL Server Configuration Manager e ver a lista de instâncias e seus status, só que em modo texto.

apt install x pg_createcluster: quando usar cada um

Cenário Abordagem recomendada
Uma instalação simples, um único banco na máquina apt install postgresql (cluster criado automaticamente)
Múltiplas versões do Postgres convivendo (16, 17, 18) pg_createcluster para cada versão/cluster
Ambientes isolados na mesma máquina (dev, staging) com portas diferentes pg_createcluster com -p customizado
Recriar um cluster do zero após apagar os dados pg_createcluster (ou initdb direto, fora do Debian)

Comparativo lado a lado

Conceito SQL Server (Windows) PostgreSQL (Linux)
Instalador Wizard gráfico (.exe) apt install postgresql
Criação da estrutura inicial Automática, dentro do wizard initdb (direto ou via pg_createcluster)
Múltiplas instâncias na mesma máquina Instâncias nomeadas (SERVIDOR\INSTANCIA) Múltiplos clusters via pg_createcluster
Gerenciador de serviço Windows Services (services.msc) systemd / pg_ctlcluster
Usuário administrador padrão sa ou conta Windows postgres (usuário de sistema Linux)
Cliente de linha de comando sqlcmd psql
Diretório de dados C:\Program Files\Microsoft SQL Server\...\Data /var/lib/postgresql/18/main
Controle de acesso SSMS (Logins/Security) Arquivo texto pg_hba.conf

Diretórios e arquivos padrão

# Binários do Postgres
/usr/lib/postgresql/18/bin/# Diretório de dados (equivalente à pasta “Data” do SQL Server)
/var/lib/postgresql/18/main/

# Arquivos de configuração
/etc/postgresql/18/main/postgresql.conf
/etc/postgresql/18/main/pg_hba.conf

Primeiros comandos depois de instalar

No SQL Server, seu primeiro passo pós-instalação normalmente é abrir o SSMS e conectar com sa ou autenticação do Windows. No Postgres, o equivalente é entrar como o usuário de sistema postgres e usar o psql:

# Entra como o usuário de sistema “postgres” e abre o cliente psql
sudo -u postgres psql# Dentro do psql:
\l — lista os bancos (equivalente a “Databases” no SSMS)
\du — lista os usuários/roles (equivalente a “Logins”)
\q — sai do psql

Para criar seu próprio usuário e banco:

sudo -u postgres createuser –interactive
sudo -u postgres createdb meubanco

Erros comuns de quem vem do SQL Server

  • Achar que “instalar o pacote” já basta para acessar de qualquer lugar. Por padrão, o pg_hba.conf só libera conexões locais, e alterá-lo exige apenas um reload do serviço. Mas o acesso remoto também depende do listen_addresses em postgresql.conf, que vem configurado como localhost, e essa alteração específica exige um restart, não só um reload.
  • Procurar por um sa. Não existe. O superusuário é o postgres, autenticado via usuário de sistema Linux por padrão.
  • Esperar um instalador único para tudo. No Postgres, o motor do banco é só a base: ferramentas gráficas como o pgAdmin e até extensões (como a PostGIS) são pacotes independentes, instalados e atualizados separadamente conforme a necessidade.
  • Confundir “cluster” do Postgres com cluster de failover. No jargão do Postgres, “cluster” é só o conjunto de bancos gerenciados por uma instância, equivalente ao conceito de instância no SQL Server, sem relação com alta disponibilidade.
  • Não usar sudo. Praticamente toda operação de instalação e gerência de serviço no Linux exige privilégios elevados, é comum alternar entre os contextos root e postgres.

Resumo

O wizard do SQL Server empacota em uma tela só três operações que no Linux são explícitas e separadas: instalar o binário (apt), criar a estrutura de dados (initdb) e registrar o serviço (systemd). O pg_createcluster assume esse papel quando você precisa de mais controle, múltiplas versões, múltiplos clusters, portas customizadas, próximo do que instâncias nomeadas fazem no mundo SQL Server.

Tem PostgreSQL em produção na sua empresa?

Faça o Power PostgreSQL Check-up: uma avaliação gratuita de performance, backup, segurança e alta disponibilidade, feita pelos nossos especialistas. Sem custo e sem compromisso.

Quero meu check-up gratuito

 

Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Power Tuning
Visão geral da privacidade

Este site utiliza cookies para que possamos lhe proporcionar a melhor experiência de usuário possível. As informações dos cookies são armazenadas em seu navegador e executam funções como reconhecê-lo quando você retorna ao nosso site e ajudar nossa equipe a entender quais seções do site você considera mais interessantes e úteis.