Acesso ao PostgreSQL
O banco de dados PostgreSQL corporativo está hospedado no Amazon RDS e é acessível apenas via VPN.
🗄️ Informações do Banco
| Atributo | Valor |
|---|---|
| Endpoint | bitio-staging-database.c03q40ewsobq.us-east-1.rds.amazonaws.com |
| Engine | PostgreSQL 15.7 |
| Porta | 5432 |
| IP Privado | 10.0.11.230 |
| Acesso | Apenas via VPN |
📋 Pré-requisitos
- ✅ VPN configurada e conectada
- ✅ Cliente PostgreSQL instalado
- ✅ Credenciais do banco de dados
🔧 Instalação do Cliente PostgreSQL
Ubuntu/Linux
sudo apt update
sudo apt install -y postgresql-client
Windows
- Baixar pgAdmin: https://www.pgadmin.org/download/
- 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)
- Abrir pgAdmin
- 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
- Name:
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
Navegação
-- 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
.envao.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.