> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Source de dictionnaire MySQL

> Configurer MySQL comme source de dictionnaire dans ClickHouse.

Exemple de paramètres :

<Tabs>
  <Tab title="DDL">
    ```sql theme={null}
    SOURCE(MYSQL(
        port 3306
        user 'clickhouse'
        password 'qwerty'
        replica(host 'example01-1' priority 1)
        replica(host 'example01-2' priority 1)
        db 'db_name'
        table 'table_name'
        where 'id=10'
        invalidate_query 'SQL_QUERY'
        fail_on_connection_loss 'true'
        query 'SELECT id, value_1, value_2 FROM db_name.table_name'
        enable_compression 1
    ))
    ```
  </Tab>

  <Tab title="Fichier de configuration">
    ```xml theme={null}
    <source>
      <mysql>
          <port>3306</port>
          <user>clickhouse</user>
          <password>qwerty</password>
          <replica>
              <host>example01-1</host>
              <priority>1</priority>
          </replica>
          <replica>
              <host>example01-2</host>
              <priority>1</priority>
          </replica>
          <db>db_name</db>
          <table>table_name</table>
          <where>id=10</where>
          <invalidate_query>SQL_QUERY</invalidate_query>
          <fail_on_connection_loss>true</fail_on_connection_loss>
          <query>SELECT id, value_1, value_2 FROM db_name.table_name</query>
          <enable_compression>1</enable_compression>
      </mysql>
    </source>
    ```
  </Tab>
</Tabs>

<br />

Champs des paramètres :

| Paramètre                       | Description                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `port`                          | Port du serveur MySQL. Vous pouvez le spécifier pour toutes les répliques, ou individuellement pour chacune d’elles (dans `<replica>`).                                                                                                                                                                                                                                                 |
| `user`                          | Nom de l’utilisateur MySQL. Vous pouvez le spécifier pour toutes les répliques, ou individuellement pour chacune d’elles (dans `<replica>`).                                                                                                                                                                                                                                            |
| `password`                      | Mot de passe de l’utilisateur MySQL. Vous pouvez le spécifier pour toutes les répliques, ou individuellement pour chacune d’elles (dans `<replica>`).                                                                                                                                                                                                                                   |
| `replica`                       | Section de configuration des répliques. Il peut y avoir plusieurs sections.                                                                                                                                                                                                                                                                                                             |
| `replica/host`                  | Hôte MySQL.                                                                                                                                                                                                                                                                                                                                                                             |
| `replica/priority`              | Priorité de la réplique. Lors d’une tentative de connexion, ClickHouse parcourt les répliques par ordre de priorité. Plus le nombre est faible, plus la priorité est élevée.                                                                                                                                                                                                            |
| `db`                            | Nom de la base de données.                                                                                                                                                                                                                                                                                                                                                              |
| `table`                         | Nom de la table.                                                                                                                                                                                                                                                                                                                                                                        |
| `where`                         | Critère de sélection. La syntaxe des conditions est la même que celle de la clause `WHERE` dans MySQL, par exemple `id > 10 AND id < 20`. Facultatif.                                                                                                                                                                                                                                   |
| `invalidate_query`              | Requête permettant de vérifier l’état du dictionnaire. Facultatif. Pour en savoir plus, consultez la section [Actualisation des données du dictionnaire à l’aide de LIFETIME](/fr/reference/statements/create/dictionary/lifetime).                                                                                                                                                     |
| `fail_on_connection_loss`       | Contrôle le comportement du serveur en cas de perte de connexion. Si `true`, une exception est immédiatement levée si la connexion entre le client et le serveur est perdue. Si `false`, le serveur réessaie de récupérer les données au moins trois fois avant de signaler une erreur. Notez que ces nouvelles tentatives augmentent le temps de réponse. Valeur par défaut : `false`. |
| `query`                         | Requête personnalisée. Facultatif.                                                                                                                                                                                                                                                                                                                                                      |
| `enable_compression`            | Active la compression zlib pour la connexion utilisant le protocole MySQL. Lorsqu’elle est définie sur `1`, ClickHouse demande une compression au niveau du protocole au serveur MySQL. Peut également être définie pour chaque réplique dans `<replica>`. Valeur par défaut : `0`.                                                                                                     |
| `ssl_ca_pem`                    | Contenu du certificat de l’autorité de certification (CA) utilisé pour vérifier le certificat du serveur MySQL. Facultatif.                                                                                                                                                                                                                                                             |
| `ssl_cert_pem`                  | Contenu du certificat client, pour l’authentification basée sur certificat. Facultatif.                                                                                                                                                                                                                                                                                                 |
| `ssl_key_pem`                   | Contenu de la clé privée associée à `ssl_cert_pem`. Facultatif.                                                                                                                                                                                                                                                                                                                         |
| `ssl_ca`, `ssl_cert`, `ssl_key` | Les mêmes identifiants sous forme de chemins vers des fichiers sur le serveur. Autorisés uniquement pour un dictionnaire défini dans un fichier de configuration du serveur, ou via une collection nommée qui y est définie, voir ci-dessous. Facultatif.                                                                                                                               |

<Note>
  Les champs `table` ou `where` ne peuvent pas être utilisés avec le champ `query`. L’un des champs `table` ou `query` doit obligatoirement être déclaré.
</Note>

<Note>
  `ssl_ca`, `ssl_cert` et `ssl_key` désignent des fichiers que le serveur ouvre avec ses propres privilèges ; ils ne sont donc acceptés que pour un dictionnaire défini dans un fichier de configuration du serveur, ou via une collection nommée qui y est définie. Une requête `CREATE DICTIONARY` qui spécifie directement les identifiants TLS doit plutôt fournir leur contenu dans `ssl_ca_pem`, `ssl_cert_pem` et `ssl_key_pem`. Ces valeurs sont masquées dans les logs et dans les requêtes `SHOW`, de la même manière que les mots de passe.
</Note>

<Note>
  Il n’existe aucun paramètre explicite `secure`. Lors de l’établissement d’une connexion SSL, la sécurité est obligatoire.
</Note>

Il est possible de se connecter à MySQL sur un hôte local via des sockets. Pour ce faire, définissez `host` et `socket`.

Exemple de paramètres :

<Tabs>
  <Tab title="DDL">
    ```sql theme={null}
    SOURCE(MYSQL(
        host 'localhost'
        socket '/path/to/socket/file.sock'
        user 'clickhouse'
        password 'qwerty'
        db 'db_name'
        table 'table_name'
        where 'id=10'
        invalidate_query 'SQL_QUERY'
        fail_on_connection_loss 'true'
        query 'SELECT id, value_1, value_2 FROM db_name.table_name'
    ))
    ```
  </Tab>

  <Tab title="Fichier de configuration">
    ```xml theme={null}
    <source>
      <mysql>
          <host>localhost</host>
          <socket>/path/to/socket/file.sock</socket>
          <user>clickhouse</user>
          <password>qwerty</password>
          <db>db_name</db>
          <table>table_name</table>
          <where>id=10</where>
          <invalidate_query>SQL_QUERY</invalidate_query>
          <fail_on_connection_loss>true</fail_on_connection_loss>
          <query>SELECT id, value_1, value_2 FROM db_name.table_name</query>
      </mysql>
    </source>
    ```
  </Tab>
</Tabs>
