# MANUAL TÉCNICO - DIAGNÓSTICO DE CONECTIVIDADE DE BANCOS DE DADOS

**Código:** ITGSUP 0020/26 | **Classificação:** INTERNO
**Responsável:** João Pedro Toledo Gonçalves | **Data:** {{DATA_ATUAL}}

## 1. HISTÓRICO DE REVISÃO

| Data | Versão | Descrição | Autor |
| :--- | :--- | :--- | :--- |
| {{DATA_ATUAL}} | 1.0 | Criação Inicial | João Pedro Toledo Gonçalves |

## 2. OBJETIVO
Padronizar o diagnóstico inicial de incidentes de "banco fora do ar" ou "erro de conexão" para PostgreSQL, MySQL e Redis.

## 3. PRÉ-REQUISITOS
*   [ ] Acesso ao terminal do servidor.
*   [ ] Saber qual banco está sendo diagnosticado (PG, MySQL ou Redis).

---

## 4. VERIFICAÇÃO DE STATUS DO SERVIÇO

O primeiro passo é saber se o processo está rodando.

**PostgreSQL:**
```bash
sudo systemctl status postgresql
```
*   **Ativo:** `Active: active (exited)` ou `(running)`.
*   **Porta Padrão:** 5432.

**MySQL / MariaDB:**
```bash
sudo systemctl status mysql
# ou
sudo systemctl status mariadb
```
*   **Porta Padrão:** 3306.

**Redis:**
```bash
sudo systemctl status redis-server
# ou
sudo systemctl status redis
```
*   **Porta Padrão:** 6379.

---

## 5. TESTE DE CONEXÃO LOCAL (PING)

Se o serviço roda, ele responde?

### Redis (Mais Simples)
Use o `redis-cli` para enviar um PING.
```bash
redis-cli ping
```
*   **Sucesso:** Retorna `PONG`.
*   **Falha:** `Could not connect...` (Serviço parado) ou `NOAUTH` (Precisa de senha: `redis-cli -a SENHA ping`).

### PostgreSQL
Tente logar como o usuário `postgres`.
```bash
sudo -u postgres psql -c "\conninfo"
```
*   **Sucesso:** Mostra dados da conexão (Socket, Port).
*   **Falha:** `Is the server running locally...`

### MySQL
Teste o login (pode exigir senha de root).
```bash
sudo mysqladmin -u root -p ping
```
*   **Sucesso:** `mysqld is alive`.

---

## 6. DIAGNÓSTICO DE REDE (ACESSO EXTERNO)

Se local funciona, mas a aplicação não conecta, verifique a rede.

**1. A Porta está aberta? (`ss` ou `netstat`)**
```bash
sudo ss -tuln | grep 5432  # (Exemplo PG)
```
*   `127.0.0.1:5432` -> **ERRO:** Só aceita conexão local (localhost).
*   `0.0.0.0:5432` -> **OK:** Aceita conexões de qualquer IP.

**2. Teste de Telnet (Da estação do usuário/app)**
No computador que está com erro, tente:
```bash
telnet IP_DO_SERVIDOR 5432
```
*   **Connected:** Rede OK. Problema é senha/usuario.
*   **Timeout:** Firewall bloqueando ou IP errado.

## 7. VALIDAÇÃO FINAL
- [ ] O serviço está "Active (Running)"?
- [ ] O teste local (Ping/Psql) funcionou?
- [ ] A porta está escutando em `0.0.0.0` (se precisar de acesso externo)?
