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

> Documentation de l'interface du protocole PostgreSQL dans ClickHouse

# Interface PostgreSQL

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Non pris en charge par ClickHouse Cloud
        </div>;
};

<Tip>
  Découvrez notre service [Managed Postgres](/fr/products/managed-postgres/overview). Basé sur un stockage NVMe physiquement colocalisé avec le compute, il offre des performances jusqu’à 10 fois supérieures pour les workloads limités par le disque par rapport aux alternatives utilisant du stockage réseau comme EBS, et vous permet de répliquer vos données Postgres vers ClickHouse à l’aide du connecteur Postgres CDC dans ClickPipes.
</Tip>

ClickHouse prend en charge le protocole PostgreSQL wire, ce qui vous permet d’utiliser des clients Postgres pour vous connecter à ClickHouse. Dans un certain sens, ClickHouse peut se faire passer pour une instance PostgreSQL, ce qui vous permet de connecter à ClickHouse une application cliente PostgreSQL qui n’est pas déjà directement prise en charge par ClickHouse (par exemple, Amazon Redshift).

Pour activer le protocole PostgreSQL wire, ajoutez le paramètre [postgresql\_port](/fr/reference/settings/server-settings/settings#postgresql_port) au fichier de configuration de votre serveur. Par exemple, vous pouvez définir le port dans un nouveau fichier XML dans votre dossier `config.d` :

```xml theme={null}
<clickhouse>
    <postgresql_port>9005</postgresql_port>
</clickhouse>
```

Démarrez votre serveur ClickHouse et recherchez dans les logs un message similaire au suivant mentionnant **Listening for PostgreSQL compatibility protocol** :

```response theme={null}
{} <Information> Application: Listening for PostgreSQL compatibility protocol: 127.0.0.1:9005
```

<div id="connect-psql-to-clickhouse">
  ## Connecter psql à ClickHouse
</div>

La commande suivante montre comment se connecter à ClickHouse avec le client PostgreSQL `psql` :

```bash theme={null}
psql -p [port] -h [hostname] -U [username] [database_name]
```

Par exemple :

```bash theme={null}
psql -p 9005 -h 127.0.0.1 -U alice default
```

<Note>
  Le client `psql` exige une connexion avec mot de passe. Vous ne pourrez donc pas vous connecter avec l’utilisateur `default` sans mot de passe. Attribuez un mot de passe à l’utilisateur `default` ou connectez-vous avec un autre utilisateur.
</Note>

Le client `psql` vous invite à saisir le mot de passe :

```response theme={null}
Password for user alice:
psql (14.2, server 22.3.1.1)
WARNING: psql major version 14, server major version 22.
         Some psql features might not work.
Type "help" for help.

default=>
```

Et voilà ! Vous disposez désormais d'un client PostgreSQL connecté à ClickHouse, et toutes les commandes ainsi que les requêtes sont exécutées dans ClickHouse.

<Note>
  Le protocole PostgreSQL ne prend actuellement en charge que les mots de passe en texte brut.
</Note>

<div id="using-ssl">
  ## Utilisation de SSL
</div>

Si SSL/TLS est configuré sur votre instance ClickHouse, `postgresql_port` utilisera les mêmes paramètres (le port est partagé entre les clients sécurisés et non sécurisés).

Chaque client a sa propre méthode pour se connecter via SSL. La commande suivante montre comment fournir les certificats et la clé afin de connecter `psql` à ClickHouse de manière sécurisée :

```bash theme={null}
psql "port=9005 host=127.0.0.1 user=alice dbname=default sslcert=/path/to/certificate.pem sslkey=/path/to/key.pem sslrootcert=/path/to/rootcert.pem sslmode=verify-ca"
```

<div id="using-scram-sha256">
  ## Configurer l'authentification des utilisateurs ClickHouse avec SCRAM-SHA-256
</div>

Pour garantir une authentification sécurisée des utilisateurs dans ClickHouse, il est recommandé d'utiliser le protocole SCRAM-SHA-256. Configurez l'utilisateur en spécifiant l'élément `password_scram_sha256_hex` dans le fichier users.xml. Le hachage du mot de passe doit être généré avec num\_iterations=4096.

Assurez-vous que le client psql prend en charge SCRAM-SHA-256 et le négocie lors de la connexion.

Exemple de configuration pour l'utilisateur `user_with_sha256` avec le mot de passe `abacaba` :

```xml theme={null}
<user_with_sha256>
    <password_scram_sha256_hex>04e7a70338d7af7bb6142fe7e19fef46d9b605f3e78b932a60e8200ef9154976</password_scram_sha256_hex>
</user_with_sha256>
```

Consultez la [documentation PostgreSQL](https://jdbc.postgresql.org/documentation/head/ssl-client.html) pour plus de détails sur les paramètres SSL.
