Pular para o conteúdo principal

Acesso ao PostgreSQL

O banco de dados PostgreSQL corporativo está hospedado no Amazon RDS e é acessível apenas via VPN.

🗄️ Informações do Banco

AtributoValor
Endpointbitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com
EnginePostgreSQL 15.7
Porta5432
IP Privado10.0.11.230
AcessoApenas via VPN

📋 Pré-requisitos

  1. VPN configurada e conectada
  2. ✅ Cliente PostgreSQL instalado
  3. ✅ Credenciais do banco de dados

🔧 Instalação do Cliente PostgreSQL

Ubuntu/Linux

sudo apt update
sudo apt install -y postgresql-client

Windows

  1. Baixar pgAdmin: https://www.pgadmin.org/download/
  2. Ou instalar via Chocolatey:
    choco install postgresql

macOS

# Via Homebrew
brew install postgresql

# Ou baixar pgAdmin: https://www.pgadmin.org/download/

🚀 Conectando ao Banco

Via psql (Linha de Comando)

# Conectar via VPN (substitua username e database)
psql -h bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com \
-U seu_usuario \
-d nome_do_banco \
-p 5432

# Exemplo com prompt de senha
psql -h bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com -U postgres -d postgres

Via pgAdmin (Interface Gráfica)

  1. Abrir pgAdmin
  2. Add New Server:
    • Name: BITIO PostgreSQL
    • Host: bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com
    • Port: 5432
    • Username: seu_usuario
    • Password: sua_senha

Via String de Conexão

# Formato padrão
postgresql://usuario:senha@bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com:5432/database

# Exemplo para aplicações
DATABASE_URL="postgresql://user:pass@bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com:5432/bitio_db"

✅ Verificar Conectividade

Teste de Rede

# Com VPN conectada - deve conectar
telnet bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com 5432

# Teste alternativo
timeout 10 bash -c 'cat < /dev/null > /dev/tcp/10.0.11.230/5432' && echo "PostgreSQL OK"

Teste de Autenticação

# Listar databases disponíveis
psql -h bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com \
-U seu_usuario \
-d postgres \
-c "\l"

📊 Comandos Úteis psql

-- Listar databases
\l

-- Conectar a um database
\c nome_do_banco

-- Listar tabelas
\dt

-- Descrever tabela
\d nome_da_tabela

-- Listar usuários
\du

-- Sair
\q

Consultas de Exemplo

-- Informações do servidor
SELECT version();

-- Databases e tamanhos
SELECT
datname as "Database",
pg_size_pretty(pg_database_size(datname)) as "Size"
FROM pg_database
ORDER BY pg_database_size(datname) DESC;

-- Tabelas e registros
SELECT
schemaname,
tablename,
attname,
n_distinct,
most_common_vals
FROM pg_stats
WHERE schemaname = 'public';

🔗 Configuração para Desenvolvimento

Variáveis de Ambiente (.env)

# .env file para aplicações
DB_HOST=bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com
DB_PORT=5432
DB_NAME=bitio_database
DB_USER=seu_usuario
DB_PASSWORD=sua_senha
DB_SSL=require

# Para aplicações Node.js
DATABASE_URL=postgresql://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}?sslmode=require

Configuração Prisma

// prisma/schema.prisma
generator client {
provider = "prisma-client-js"
}

datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}

Configuração TypeORM

// ormconfig.ts
import { DataSource } from "typeorm";

export const AppDataSource = new DataSource({
type: "postgres",
host: "bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com",
port: 5432,
username: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
ssl: {
rejectUnauthorized: false,
},
entities: ["src/**/*.entity.{ts,js}"],
migrations: ["src/migrations/*.{ts,js}"],
});

🔒 Boas Práticas de Segurança

Credenciais

  • Nunca hardcode credenciais no código
  • ✅ Use variáveis de ambiente (.env)
  • ✅ Adicione .env ao .gitignore
  • ✅ Use diferentes usuários para dev/prod

Conexões

  • Sempre use SSL (sslmode=require)
  • ✅ Configure timeout adequado
  • ✅ Use connection pooling em produção
  • ✅ Monitore conexões ativas

Queries

  • ✅ Use prepared statements
  • ✅ Valide inputs do usuário
  • ✅ Limite número de registros retornados
  • ✅ Use índices apropriados

📈 Monitoramento e Performance

Queries Lentas

-- Identificar queries mais lentas
SELECT
query,
calls,
total_time,
mean_time,
rows
FROM pg_stat_statements
ORDER BY mean_time DESC
LIMIT 10;

Conexões Ativas

-- Ver conexões atuais
SELECT
pid,
usename,
application_name,
client_addr,
state,
query_start,
query
FROM pg_stat_activity
WHERE state != 'idle';

Tamanho das Tabelas

-- Tabelas maiores
SELECT
schemaname,
tablename,
attname,
n_distinct,
correlation
FROM pg_stats
WHERE schemaname NOT IN ('information_schema', 'pg_catalog')
ORDER BY n_distinct DESC;

🔍 Solução de Problemas

Não consegue conectar

# Verificar VPN
ip route show | grep "10.0"

# Testar conectividade
ping 10.0.11.230

# Verificar porta
telnet bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com 5432

Erro de autenticação

# Verificar credenciais
psql -h bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com \
-U postgres \
-d postgres \
-c "SELECT current_user;"

Timeout de conexão

# Verificar se VPN está ativa
systemctl status openvpn

# Reconectar VPN se necessário
sudo systemctl restart openvpn

SSL errors

-- Verificar configuração SSL
SHOW ssl;

-- Forçar SSL na connection string
postgresql://user:pass@host:5432/db?sslmode=require

Performance

Para aplicações com muitas conexões, configure um connection pool (pgBouncer) e monitore o número de conexões ativas.

Segurança

O banco é acessível apenas via VPN. Mantenha sempre a VPN conectada durante desenvolvimento e nunca exponha credenciais.