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:
- Baixa e abre o setup gráfico.
- Você escolhe o tipo de instalação (standalone, failover cluster, etc).
- Configura a instância (nome, collation, contas de serviço, paths para dados, log, backup, dentre outras configurações…).
- O próprio wizard cria os bancos de sistema (
master,model,msdb,tempdb). - 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.exefaz 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 geramaster,modelemsdb. - 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.
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:
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,template0etemplate1, equivalente aomaster/modeldo SQL Server. - Define o superusuário inicial (por padrão, um usuário de sistema chamado
postgres). - Gera os arquivos de configuração
postgresql.confepg_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
sudo apt install postgresql-18 –no-install-recommends
Criando um cluster manualmente com pg_createcluster
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
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
/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:
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 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.confsó libera conexões locais, e alterá-lo exige apenas umreloaddo serviço. Mas o acesso remoto também depende dolisten_addressesempostgresql.conf, que vem configurado comolocalhost, e essa alteração específica exige umrestart, não só um reload. - Procurar por um
sa. Não existe. O superusuário é opostgres, 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 contextosrootepostgres.
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.

