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
SELECTsur 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 (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) :
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 de MySQL pour le modèle de privilèges complet.
Où trouver vos identifiants
| Champ | Où le trouver |
|---|---|
| Host | Votre console cloud — AWS RDS : point de terminaison de l’instance ; GCP Cloud SQL : IP publique ou privée ; Azure Database for MySQL : 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
Host: your-host.example.comPort: 3306Database: your_dbUsername: datarelix_readerPassword: ••••••••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 — console RDS → votre instance de base → Connectivity & security → copiez le point de terminaison, puis composez :
mysql://datarelix_reader:password@endpoint:3306/dbname - PlanetScale — 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_dbSé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
LIMITen 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 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. |