---
title: "Connecter MySQL"
description: "Connectez Datarelix à MySQL : authentification par mot de passe ou chaîne de connexion, utilisateur en lecture seule, portée et TLS pour caching_sha2_password."
canonical: https://docs.datarelix.ai/fr/guides/connections/mysql/
---

# Connecter MySQL

Datarelix se connecte à MySQL via un service de requêtes en lecture seule. Toutes les requêtes sont validées et exécutées à l'intérieur de ce service — le modèle ne voit jamais les identifiants de connexion et n'exécute jamais de SQL brut sur votre base de données.

## Prérequis

- Un serveur MySQL (5.7+ ou 8.x).
- Un utilisateur MySQL en lecture seule disposant de `SELECT` sur la base que vous voulez analyser.
- Une accessibilité réseau depuis les IP de sortie de Datarelix vers votre serveur MySQL.

## Modes d'authentification

### Username & password

Authentification MySQL standard par nom d'utilisateur et mot de passe. Le mot de passe est stocké chiffré ; tous les autres champs de connexion sont stockés en configuration simple. Fonctionne avec les plugins `mysql_native_password` et [`caching_sha2_password`](https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html) (valeur par défaut de MySQL 8).

**Configuration — créer un utilisateur en lecture seule**

Exécutez ce qui suit dans votre instance MySQL (en tant qu'utilisateur disposant de `GRANT OPTION`) :

```sql
CREATE USER 'datarelix_reader'@'%' IDENTIFIED BY 'choose-a-strong-password';
GRANT SELECT ON your_db.* TO 'datarelix_reader'@'%';
FLUSH PRIVILEGES;
```

Remplacez `your_db` par le nom réel de votre base. Le joker d'hôte `'%'` autorise les connexions depuis n'importe quelle IP — vous pouvez le restreindre à un CIDR précis si votre serveur MySQL applique un contrôle d'accès par hôte. Voir la [référence `GRANT`](https://dev.mysql.com/doc/refman/8.0/en/grant.html) de MySQL pour le modèle de privilèges complet.

**Où trouver vos identifiants**

| Champ | Où le trouver |
|-------|----------------|
| Host | Votre console cloud — [AWS RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html) : point de terminaison de l'instance ; [GCP Cloud SQL](https://cloud.google.com/sql/docs/mysql/connect-overview) : IP publique ou privée ; [Azure Database for MySQL](https://learn.microsoft.com/en-us/azure/mysql/flexible-server/connect-workbench) : nom d'hôte du serveur (`*.mysql.database.azure.com`) |
| Port | `3306` par défaut ; visible dans le panneau d'informations de connexion de votre console cloud |
| Database | Le nom de la base — à lister avec `SHOW DATABASES;` dans la CLI MySQL |
| Username | L'utilisateur que vous venez de créer |
| Password | Le mot de passe défini dans `CREATE USER` |

**Ce qu'il faut saisir**

```ini
Host:      your-host.example.com
Port:      3306
Database:  your_db
Username:  datarelix_reader
Password:  ••••••••
```

---

### Connection string

Collez une URL `mysql://` — la chaîne de connexion — au lieu de remplir chaque champ.

**Où trouver votre chaîne de connexion**

- **[AWS RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_ConnectToInstance.html)** — console RDS → votre instance de base → **Connectivity & security** → copiez le point de terminaison, puis composez : `mysql://datarelix_reader:password@endpoint:3306/dbname`
- **[PlanetScale](https://planetscale.com/docs)** — Dashboard → votre base de données → **Connect** → copiez les informations de connexion
- **Railway / Render** — panneau des informations de connexion du service de base de données de votre projet

**Ce qu'il faut saisir**

```
mysql://datarelix_reader:your-password@your-host.example.com:3306/your_db
```

---

## Sémantique de la portée

MySQL n'a pas de notion de schéma distincte de la base de données — **la base est la portée**. La connexion est restreinte à la seule base que vous indiquez.

Pour analyser plusieurs bases sur le même serveur MySQL, créez une connexion par base.

## Découverte

Entièrement prise en charge. L'introspecteur parcourt `INFORMATION_SCHEMA.TABLES`, `INFORMATION_SCHEMA.COLUMNS` et `INFORMATION_SCHEMA.KEY_COLUMN_USAGE` pour faire remonter les tables, les colonnes, les clés primaires et les clés étrangères.

**Particularité de casse** : sur certaines plateformes, `INFORMATION_SCHEMA` de MySQL renvoie les noms de colonnes en **MAJUSCULES**. L'introspecteur les aliase en minuscules pour que la suite du traitement reste cohérente.

**Vitess / PlanetScale** : les bases adossées à Vitess n'appliquent (ni n'exposent) souvent pas les contraintes de clé étrangère, si bien que la découverte renvoie un graphe de relations vide. C'est attendu — la passe d'enrichissement par LLM déduit alors les relations à partir des conventions de nommage des colonnes.

## Limites

- Une seule base de données par connexion.
- Aucune requête d'écriture ni DDL — le validateur rejette les modifications au niveau de l'arbre syntaxique.
- Sous Linux, les noms de tables MySQL sont sensibles à la casse par défaut (`lower_case_table_names=0`) ; sous Windows et macOS, ils ne le sont pas. La découverte restitue les noms tels que MySQL les stocke.
- Un plafond de lignes est appliqué côté serveur — les requêtes sans `LIMIT` en reçoivent un automatiquement.

## Dépannage

| Symptôme | Cause probable | Solution |
|---------|--------------|-----|
| `Access denied for user 'X'@'host'` | Mauvais identifiants ou hôte non autorisé | Vérifiez le `GRANT` et les hôtes autorisés pour l'utilisateur (`'user'@'%'` contre `'user'@'10.%'`) ; MySQL fait correspondre le couple utilisateur + hôte. Sur Azure, utilisez le nom d'utilisateur simple — Flexible Server n'a **pas** besoin du suffixe `user@servername` (il ne concernait que Single Server, retiré du service). |
| `Unknown database 'X'` | Nom de base incorrect | Testez d'abord avec `mysql -h host -u user -p X`. |
| `Authentication plugin 'caching_sha2_password' ... requires secure connection` | Le plugin par défaut de MySQL 8 exige TLS (ou un échange de clés RSA) pour transmettre le mot de passe | Connectez-vous en TLS, ou passez l'utilisateur à `mysql_native_password` si TLS n'est pas disponible. |
| `Authentication plugin 'caching_sha2_password' cannot be loaded` | Paquet `cryptography` absent d'une build personnalisée | Cas non attendu sur le service hébergé — [contactez-nous](https://datarelix.ai/fr/contact/) si vous le rencontrez. |
| Résultats vides pour une requête dont vous savez qu'elle correspond à des lignes | Nom de table sensible à la casse sous Linux | Vérifiez le nom exact dans `INFORMATION_SCHEMA.TABLES` et relancez la découverte. |
