> ## Documentation Index
> Fetch the complete documentation index at: https://docs.strattum.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# MySQL

> Configure o conector MySQL para ingerir tabelas de bancos relacionais na plataforma strattum.ai.

O conector MySQL ingere tabelas de bancos MySQL na infraestrutura strattum.ai. Você seleciona quais tabelas sincronizar, cada uma em modo incremental ou full refresh, e os dados aparecem no Data Catalog com linhagem registrada.

## Capacidades

* Sincroniza tabelas específicas de qualquer schema não-sistema do banco.
* Carga incremental por coluna de cursor (`updated_at` ou equivalente) ou full refresh a cada ciclo.
* Descoberta automática do schema da tabela a partir do cursor do servidor.
* Conexão via SSL opcional.

## Objetos suportados

O conector trabalha sobre as tabelas que você seleciona. Cada tabela vira um recurso no formato `{schema}__{table}`.

| Objeto | O que vem |
| - | - |
| Tabela (modo incremental) | Apenas linhas novas ou alteradas desde o último ciclo, usando a coluna de cursor definida |
| Tabela (modo full refresh) | A tabela inteira, recarregada a cada ciclo |

Os schemas de sistema `mysql`, `information_schema`, `performance_schema` e `sys` são excluídos da descoberta.

## Pré-requisitos

> **MySQL acessível**
>
> Um banco MySQL que o worker strattum.ai consiga alcançar na porta configurada (padrão `3306`).

> **Usuário com permissão de leitura**
>
> Recomendamos um usuário dedicado com permissão apenas de `SELECT`. O passo a passo está abaixo.

## Configuração

**1. Crie um usuário read-only**

Conectado ao banco com um usuário administrador, execute:

```sql theme={null}
CREATE USER 'strattum_reader'@'%' IDENTIFIED BY 'senha_segura';
GRANT SELECT ON nome_do_banco.* TO 'strattum_reader'@'%';
FLUSH PRIVILEGES;
```

> [!TIP]
>
> Use uma senha forte e aleatória. `openssl rand -base64 32` gera uma no terminal.

**2. Libere o acesso de rede**

Garanta que o worker strattum.ai alcança o banco na porta `3306`. Em cloud (RDS, Cloud SQL), adicione o IP ou o CIDR da VPC do ambiente strattum.ai ao security group. On-premise, libere a porta no firewall.

**3. Adicione o conector no Console**

No menu lateral do Console, clique em **Conectores → + Nova Conexão** e selecione **MySQL**. Preencha os campos:

* **Nome do Conector** — identificador na lista de conectores (Obrigatório)
* **Host** — endereço do servidor MySQL (Obrigatório)
* **Porta** — porta de conexão, padrão `3306` (Obrigatório)
* **Banco de dados** — nome do banco a sincronizar (Obrigatório)
* **Usuário** — usuário read-only criado acima (Obrigatório)
* **Senha** — senha do usuário (Obrigatório)
* **Usar SSL** — ative se o banco exige conexão criptografada (Opcional)

**4. Teste e salve**

Clique em **Testar Conexão** para validar as credenciais e, em seguida, em **Salvar Conector**. Selecione as tabelas e o modo de carga de cada uma.

## Autenticação e escopos

A autenticação é por usuário e senha do banco (DSN `mysql+pymysql://...`). Não há escopos de API — o acesso é controlado pelos grants do MySQL.

| Permissão | Para que serve |
| - | - |
| `SELECT` nas tabelas a sincronizar | Ler as linhas durante a extração |
| Acesso ao `information_schema` (padrão) | Descobrir colunas e tipos das tabelas |

> [!WARNING]
>
> A plataforma nunca escreve na fonte. Não conceda `INSERT`, `UPDATE`, `DELETE` ou `DDL` ao usuário do conector.

## Frequência de sync

O conector sincroniza **a cada 1 hora**. A primeira execução após a ativação roda como sample sync (amostra) e, ao concluir, o ciclo completo passa a rodar no schedule padrão.

## Limitações conhecidas

* O modo incremental exige uma coluna de cursor monotônica (por exemplo `updated_at`). Sem ela, use full refresh.
* Linhas deletadas na origem não são removidas automaticamente em modo incremental — o cursor só captura inserções e atualizações.
* Schemas de sistema (`mysql`, `information_schema`, `performance_schema`, `sys`) não são sincronizáveis.
* Editar a conexão substitui as credenciais por completo; não há atualização parcial.

## Troubleshooting

| Sintoma | Causa provável | O que fazer |
| - | - | - |
| `Connection refused` | Host errado ou firewall bloqueando | Verifique o host e libere o IP do worker strattum.ai na porta `3306` |
| `Access denied for user` | Usuário ou senha incorretos, ou sem `SELECT` | Revise as credenciais e os grants do usuário read-only |
| `SSL connection error` | Banco exige SSL | Ative **Usar SSL** no formulário de conexão |
| Tabela não aparece para seleção | Está em schema de sistema | Schemas de sistema são excluídos; mova ou exponha a tabela em outro schema |

## Próximos passos

> **[Guia de desenvolvimento local](https://docs.strattum.ai/data-pipelines/local-development.md)**
>
> Configure o ambiente local completo com Prefect, worker e Docker Compose.

> **[Quickstart — Data Pipelines](https://docs.strattum.ai/data-pipelines/quickstart)**
>
> Ative conectores via Console strattum.ai sem precisar de ambiente local.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.