> ## Documentation Index
> Fetch the complete documentation index at: https://strattumai.mintlify.site/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

<CardGroup cols={2}>
  <Card title="MySQL acessível" icon="database">
    Um banco MySQL que o worker strattum.ai consiga alcançar na porta configurada (padrão `3306`).
  </Card>

  <Card title="Usuário com permissão de leitura" icon="user-shield">
    Recomendamos um usuário dedicado com permissão apenas de `SELECT`. O passo a passo está abaixo.
  </Card>
</CardGroup>

## Configuração

<Steps>
  <Step title="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.
    </Tip>
  </Step>

  <Step title="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.
  </Step>

  <Step title="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)
  </Step>

  <Step title="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.
  </Step>
</Steps>

## 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.
</Warning>

## 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

<CardGroup cols={2}>
  <Card title="Guia de desenvolvimento local" icon="terminal" href="/data-pipelines/local-development">
    Configure o ambiente local completo com Prefect, worker e Docker Compose.
  </Card>

  <Card title="Quickstart — Data Pipelines" icon="rocket" href="/data-pipelines/quickstart">
    Ative conectores via Console strattum.ai sem precisar de ambiente local.
  </Card>
</CardGroup>
