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

# Database

> Permite que los agents respondan preguntas directamente desde tu base de datos MySQL — estrictamente de solo lectura

Conecta una base de datos MySQL y tus agents responderán preguntas de datos directamente desde la fuente: conteos, búsquedas, tendencias, verificaciones cruzadas. Sin dashboards que armar ni CSVs que exportar — haz la pregunta, y el agent explora el esquema y escribe la query.

**Esta integración no puede escribir.** Cada query se verifica antes de ejecutarse: solo se aceptan sentencias `SELECT`; los inserts, updates, deletes, cambios de esquema, locks y trucos de múltiples sentencias se rechazan todos. Aun así, recomendamos conectar con un usuario de base de datos de solo lectura — la defensa en profundidad no cuesta nada.

## Qué pueden hacer los agents

| Capacidad                        | Detalles                                                                             |
| -------------------------------- | ------------------------------------------------------------------------------------ |
| Listar tablas                    | Descubrir qué hay en la base de datos antes de consultar.                            |
| Describir tablas                 | Columnas, tipos, nulabilidad y claves — para que las queries encajen con tu esquema. |
| Ejecutar queries de solo lectura | Solo `SELECT`, con tamaños de resultado acotados.                                    |

## Prueba preguntar

* *"¿Cuántos pedidos recibimos ayer y cuál fue el total?"*
* *"¿Qué clientes se registraron este mes pero nunca hicieron un pedido?"*
* *"¿Cuáles son los 10 productos más vendidos este trimestre?"*
* *"¿Hay algo inusual en el volumen de tickets de soporte esta semana?"*
* *"¿Qué columnas tiene la tabla de suscripciones?"*

## Conectar una base de datos

<Steps>
  <Step title="Crea un usuario de solo lectura">
    En MySQL, crea un usuario dedicado para Leme y otórgale solo `SELECT`, únicamente sobre los esquemas que los agents deban ver:

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

  <Step title="Abre Integraciones">
    En el dashboard de Leme, ve a **Integraciones** y selecciona **Database**.
  </Step>

  <Step title="Ingresa los datos de conexión">
    Dale a la conexión un **alias** — un nombre corto que los agents usan para referirse a esta base de datos, como `analytics` — y la URL de conexión:

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

    Leme valida la conexión antes de guardarla.
  </Step>

  <Step title="Habilítalo en tus agents">
    Vincula la conexión a los agents que deban usarla.
  </Step>
</Steps>

La base de datos debe ser accesible desde los servidores de Leme. Si tu base de datos solo acepta conexiones desde direcciones en una lista de permitidos, contacta a [soporte](mailto:support@leme.ai) para conocer las direcciones que debes permitir.

## Permisos

| Acción                                                     | Categoría | Por defecto |
| ---------------------------------------------------------- | --------- | ----------- |
| Listar tablas, describir tablas, ejecutar queries `SELECT` | Lectura   | Allow       |

La integración no tiene acciones de escritura, así que no hay nada más riesgoso que configurar. Recuerda que "lectura" aquí significa *todo lo que el usuario conectado pueda consultar con `SELECT`* — limita los grants del usuario de MySQL a los datos que los agents deban ver legítimamente, y deja las tablas personales o sensibles fuera del grant.

## Notas de seguridad

* Las credenciales se guardan cifradas y nunca se muestran a los agents — los agents envían queries y Leme las ejecuta del lado del servidor.
* Usa `?ssl=true` en la URL de conexión para que el tráfico hacia tu base de datos viaje cifrado.
* ¿Vas a rotar la contraseña? Actualízala en MySQL y luego reconecta en **Integraciones → Database** con la URL nueva.

## Solución de problemas

<AccordionGroup>
  <Accordion title="La conexión falla al validarse">
    Revisa las piezas en orden: host accesible desde internet, puerto correcto (3306 por defecto), usuario y contraseña válidos, nombre de la base de datos presente en la URL. El mensaje de error indica qué verificación falló.
  </Accordion>

  <Accordion title="Una query se rechazó por no ser de solo lectura">
    Funciona según lo previsto — el agent intentó algo distinto de un `SELECT` simple. Reformula la solicitud como una pregunta sobre datos; si realmente necesitas cambiar datos, eso está fuera de lo que esta integración permite.
  </Accordion>

  <Accordion title="El agent dice que una tabla no existe">
    Probablemente el usuario de solo lectura no tiene `SELECT` sobre ese esquema. Amplía el grant en MySQL; no hace falta reconectar.
  </Accordion>

  <Accordion title="Los resultados parecen cortados">
    Los resultados de las queries están acotados para que las respuestas sean rápidas. Para preguntas grandes, pide agregados ("totales por mes") en lugar de filas crudas — el agent llevará el trabajo al SQL.
  </Accordion>
</AccordionGroup>
