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

# Banco de dados

> Deixe agents responderem perguntas direto do seu banco MySQL — estritamente somente leitura

Conecte um banco MySQL e seus agents respondem perguntas de dados direto da fonte: contagens, consultas pontuais, tendências, conferências cruzadas. Sem dashboards para montar, sem exportar CSV — faça a pergunta, o agent explora o schema e escreve a query.

**Esta integração não escreve.** Toda query é verificada antes de rodar: apenas comandos `SELECT` são aceitos; inserts, updates, deletes, mudanças de schema, locks e truques de múltiplos comandos são todos rejeitados. Ainda assim, recomendamos conectar com um usuário de banco somente leitura — defesa em profundidade não custa nada.

## O que os agents podem fazer

| Capacidade                       | Detalhes                                                                        |
| -------------------------------- | ------------------------------------------------------------------------------- |
| Listar tabelas                   | Descobrir o que existe no banco antes de consultar.                             |
| Descrever tabelas                | Colunas, tipos, nulidade e chaves — para queries que se encaixam no seu schema. |
| Executar queries somente leitura | Apenas `SELECT`, com tamanhos de resultado limitados.                           |

## Experimente perguntar

* *"Quantos pedidos recebemos ontem, e qual foi o total?"*
* *"Quais clientes se cadastraram neste mês mas nunca fizeram um pedido?"*
* *"Quais são os 10 produtos mais vendidos neste trimestre?"*
* *"Tem algo fora do normal no volume de tickets de suporte nesta semana?"*
* *"Quais colunas a tabela de assinaturas tem?"*

## Conectar um banco de dados

<Steps>
  <Step title="Crie um usuário somente leitura">
    No MySQL, crie um usuário dedicado para a Leme e conceda a ele apenas `SELECT`, somente nos schemas que os agents devem ver:

    ```sql theme={null}
    CREATE USER 'leme_readonly'@'%' IDENTIFIED BY 'a-strong-password';
    GRANT SELECT ON analytics.* TO 'leme_readonly'@'%';
    ```
  </Step>

  <Step title="Abra Integrações">
    No dashboard da Leme, acesse **Integrações** e selecione **Banco de dados**.
  </Step>

  <Step title="Informe os dados da conexão">
    Dê à conexão um **alias** — um nome curto que os agents usam para se referir a este banco, como `analytics` — e a URL de conexão:

    ```text theme={null}
    mysql://leme_readonly:a-strong-password@db.example.com:3306/analytics?ssl=true
    ```

    A Leme valida a conexão antes de salvá-la.
  </Step>

  <Step title="Habilite nos seus agents">
    Vincule a conexão aos agents que devem usá-la.
  </Step>
</Steps>

O banco precisa estar acessível a partir dos servidores da Leme. Se o seu banco só aceita conexões de endereços em uma allowlist, entre em contato com o [suporte](mailto:support@leme.ai) para obter os endereços a liberar.

## Permissões

| Ação                                                         | Categoria | Padrão   |
| ------------------------------------------------------------ | --------- | -------- |
| Listar tabelas, descrever tabelas, executar queries `SELECT` | Leitura   | Permitir |

A integração não tem ações de escrita, então não há nada mais arriscado a configurar. Lembre que "leitura" aqui significa *tudo o que o usuário conectado consegue consultar com `SELECT`* — restrinja os grants do usuário MySQL aos dados que os agents devem legitimamente ver, e deixe tabelas pessoais ou sensíveis fora do grant.

## Notas de segurança

* As credenciais são armazenadas criptografadas e nunca são exibidas para agents — agents enviam queries, a Leme as executa no servidor.
* Use `?ssl=true` na URL de conexão para que o tráfego até o seu banco seja criptografado em trânsito.
* Vai rotacionar a senha? Atualize-a no MySQL e depois reconecte em **Integrações → Banco de dados** com a nova URL.

## Solução de problemas

<AccordionGroup>
  <Accordion title="A conexão falha na validação">
    Verifique as peças em ordem: host acessível pela internet, porta correta (padrão 3306), usuário e senha válidos, nome do banco presente na URL. A mensagem de erro diz qual verificação falhou.
  </Accordion>

  <Accordion title="Uma query foi rejeitada por não ser somente leitura">
    Funcionando como esperado — o agent tentou algo além de um `SELECT` puro. Reformule o pedido como uma pergunta sobre dados; se você realmente precisa alterar dados, isso está fora do que esta integração permite.
  </Accordion>

  <Accordion title="O agent diz que uma tabela não existe">
    O usuário somente leitura provavelmente não tem `SELECT` naquele schema. Amplie o grant no MySQL; não é preciso reconectar.
  </Accordion>

  <Accordion title="Os resultados parecem cortados">
    Os resultados de query são limitados para manter as respostas rápidas. Para perguntas grandes, peça agregados ("totais por mês") em vez de linhas brutas — o agent empurra o trabalho para o SQL.
  </Accordion>
</AccordionGroup>
