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 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 :
<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 :
{} <Information> Application: Listening for PostgreSQL compatibility protocol: 127.0.0.1:9005Connecter psql à ClickHouse
La commande suivante montre comment se connecter à ClickHouse avec le client PostgreSQL psql :
psql -p [port] -h [hostname] -U [username] [database_name]Par exemple :
psql -p 9005 -h 127.0.0.1 -U alice defaultLe client psql vous invite à saisir le mot de passe :
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.
Utilisation de SSL
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 :
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"Configurer l'authentification des utilisateurs ClickHouse avec SCRAM-SHA-256
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 :
<user_with_sha256>
<password_scram_sha256_hex>04e7a70338d7af7bb6142fe7e19fef46d9b605f3e78b932a60e8200ef9154976</password_scram_sha256_hex>
</user_with_sha256>Consultez la documentation PostgreSQL pour plus de détails sur les paramètres SSL.