Aller au contenu

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

ChampOù le trouver
HostVotre 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)
Port3306 par défaut ; visible dans le panneau d’informations de connexion de votre console cloud
DatabaseLe nom de la base — à lister avec SHOW DATABASES; dans la CLI MySQL
UsernameL’utilisateur que vous venez de créer
PasswordLe mot de passe défini dans CREATE USER

Ce qu’il faut saisir

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 — 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_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ômeCause probableSolution
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 incorrectTestez d’abord avec mysql -h host -u user -p X.
Authentication plugin 'caching_sha2_password' ... requires secure connectionLe plugin par défaut de MySQL 8 exige TLS (ou un échange de clés RSA) pour transmettre le mot de passeConnectez-vous en TLS, ou passez l’utilisateur à mysql_native_password si TLS n’est pas disponible.
Authentication plugin 'caching_sha2_password' cannot be loadedPaquet cryptography absent d’une build personnaliséeCas 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 lignesNom de table sensible à la casse sous LinuxVérifiez le nom exact dans INFORMATION_SCHEMA.TABLES et relancez la découverte.