Installation et configuration du pilote ODBC pour Linux

Linux utilise des sources de données nommées (DSNs) pour connecter les applications client basées sur ODBC à Snowflake. Vous pouvez choisir d’installer le pilote ODBC en utilisant le fichier TGZ, le pack RPM ou le pack DEB fourni dans le Snowflake Client Repository.

Dans ce chapitre :

Conditions préalables

Système d’exploitation

Pour obtenir la liste des systèmes d’exploitation pris en charge par les clients Snowflake, voir Prise en charge par les systèmes d’exploitation.

Gestionnaire de pilotes : iODBC ou unixODBC

Un gestionnaire de pilotes est nécessaire pour gérer la communication entre Snowflake et le pilote ODBC. Le pilote prend en charge l’utilisation de iODBC ou de unixODBC comme gestionnaire de pilotes.

iODBC

Si iODBC n’est pas installé sur CentOS, comme sudo, exécutez la commande suivante :

$ yum install libiodbc

unixODBC

unixODBC fournit les utilitaires de ligne de commande odbcinst et isql utilisés pour installer, configurer et tester le pilote. Pour vérifier si unixODBC est installé, exécutez les commandes suivantes :

$ which odbcinst

$ which isql

Si unixODBC n’est pas installé :

  1. En tant que sudo, exécutez les commandes suivantes :

    $ yum search unixODBC
    
    $ yum install unixODBC.x86_64
    
  2. Vérifiez le répertoire où odbcinst s’attend à ce que les fichiers odbcinst.ini et odbc.ini se trouvent :

    $ odbcinst -j
    

    L’emplacement devrait être /etc.

Étape 1 : vérification de la signature du pack (RPM ou DEB uniquement) — Facultatif

Note

Si vous installez le pilote ODBC en utilisant yum ou le fichier TGZ, ignorez cette étape.

Si vous installez le pilote ODBC à l’aide du pack RPM ou DEB et que vous souhaitez vérifier la signature du pack avant l’installation, effectuez les tâches suivantes :

1.1 : téléchargement et importation de la dernière clé publique Snowflake

Pour télécharger et importer la clé à partir du serveur de clés publiques :

$ gpg --keyserver hkp://keys.gnupg.net --recv-keys <GPG_KEY_ID>

Pour <GPG_KEY_ID>, indiquez l’un des IDs de clés suivants :

Version du pilote ODBC

ID de clé GPG

2.22.1 et supérieur

37C7086698CB005C

2.18.2 par le biais de 2.22.0

EC218558EABB25A1

Jusqu’à 2.18.1

93DB296A69BE019A

Si cette commande échoue avec l’erreur suivante :

gpg: keyserver receive failed: Server indicated a failure

puis spécifiez que vous voulez utiliser le port 80 pour le serveur de clés :

gpg --keyserver hkp://keys.gnupg.net:80  ...

1.2 : téléchargement du pack de pilotes RPM ou DEB

Téléchargez le pack à partir du Snowflake Client Repository. Pour plus de détails, voir Téléchargement du pilote ODBC.

1.3 : vérification de la signature du pack de pilote RPM ou DEB

Signature du pack RPM

  1. Vérifiez que la clé a été importée avec succès :

    $ gpg --list-keys
    

    La commande doit afficher la clé Snowflake.

  2. Vérifiez la signature :

    $ rpm -K snowflake-odbc-<version>.x86_64.rpm
    

    Note

    Si rpm n’a pas la clé GPG que vous avez importée, la commande signalera que les signatures ne sont pas OK et produira un avertissement NOKEY :

    $ rpm -K snowflake-odbc-<version>.x86_64.rpm
    
    snowflake-odbc-<version>.x86_64.rpm: digests SIGNATURES NOT OK
    
    $ rpm -Kv snowflake-odbc-<version>.x86_64.rpm
    
    snowflake-odbc-<version>.rpm:
        Header V4 RSA/SHA1 Signature, key ID 98cb005c: NOKEY
        Header SHA1 digest: OK
        V4 RSA/SHA1 Signature, key ID 98cb005c: NOKEY
        MD5 digest: OK
    

    Si cela se produit, exécutez les commandes suivantes pour exporter la clé GPG, importez la clé dans rpm et vérifiez à nouveau la signature :

    $ gpg --export -a <GPG_KEY_ID> > odbc-signing-key.asc
    $ sudo rpm --import odbc-signing-key.asc
    $ rpm -K snowflake-odbc-<version>.x86_64.rpm
    

    <GPG_KEY_ID> est l’ID de la clé que vous avez installée dans 1.1 : téléchargement et importation de la dernière clé publique Snowflake.

Signature du pack DEB

  1. Installez l’outil de vérification de la signature du pack :

    $ sudo apt-get install debsig-verify
    
  2. Importez la clé publique vers le « trousseau » :

    $ mkdir /usr/share/debsig/keyrings/<GPG_KEY_ID>
    $ gpg --no-default-keyring --keyring /usr/share/debsig/keyrings/<GPG_KEY_ID>/debsig.gpg --import snowflakeKey.asc
    

    <GPG_KEY_ID> est l’ID de la clé que vous avez installée dans 1.1 : téléchargement et importation de la dernière clé publique Snowflake.

  3. Configurez une politique pour la clé. Pour plus de détails, voir /usr/share/doc/debsig-verify. La politique doit être stockée dans le répertoire suivant :

    /etc/debsig/policies/<GPG_KEY_ID>
    

    <GPG_KEY_ID> est l’ID de la clé que vous avez installée dans 1.1 : téléchargement et importation de la dernière clé publique Snowflake.

    Stockez la politique dans un fichier nommé nom_politique.pol, où nom_politique est le nom de la politique. Pour le nom de la politique, vous pouvez utiliser n’importe quelle chaîne de texte, mais celle-ci ne peut pas contenir d’espaces vides.

    Voici un exemple de fichier de politique pour une clé avec l’ID 37C7086698CB005C :

    <?xml version="1.0"?>
    <!DOCTYPE Policy SYSTEM "http://www.debian.org/debsig/1.0/policy.dtd">
    <Policy xmlns="http://www.debian.org/debsig/1.0/">
    <Origin Name="Snowflake Computing" id="37C7086698CB005C"
    Description="Snowflake ODBC Driver DEB package"/>
    
    <Selection>
    <Required Type="origin" File="debsig.gpg" id="37C7086698CB005C"/>
    </Selection>
    
    <Verification MinOptional="0">
    <Required Type="origin" File="debsig.gpg" id="37C7086698CB005C"/>
    </Verification>
    
    </Policy>
  4. Vérifiez la signature :

    $ sudo debsig-verify snowflake-odbc-<version>.x86_64.deb
    

Note

Par défaut, l’outil de vérification de signature de pack dpkg ne vérifie pas la signature lorsque vous installez le pack. Si vous voulez vérifier la signature à chaque fois que vous exécutez dpkg, supprimez la ligne --no-debsig du fichier /etc/dpkg/dpkg.cfg.

1.4 : suppression de l’ancienne clé publique Snowflake — Facultatif

Votre environnement local peut contenir plusieurs clés GPG. Cependant, pour des raisons de sécurité, Snowflake fait tourner périodiquement la clé publique GPG. Nous recommandons de supprimer la clé publique existante après avoir confirmé que la dernière clé fonctionne avec le dernier pack signé.

Pour effacer la clé :

$ gpg --delete-key "Snowflake Computing"

Étape 2 : installation du pilote ODBC

Installez le pilote à l’aide de l’une des approches suivantes :

Utilisation de yum pour télécharger et installer le pilote

Avec la version 2.21.1 du pilote ODBC (et versions ultérieures), vous pouvez utiliser yum pour télécharger et installer le pilote.

Pour télécharger et installer le pilote ODBCde Snowflake pour Linux en utilisant yum :

  1. Créez un fichier nommé /etc/yum.repos.d/snowflake-odbc.repo, et ajoutez le texte suivant au fichier :

    [snowflake-odbc]
    name=snowflake-odbc
    baseurl=https://sfc-repo.snowflakecomputing.com/odbc/linux/<VERSION>/
    gpgkey=https://sfc-repo.snowflakecomputing.com/odbc/Snowkey-<GPG_KEY_ID>-gpg
    

    VERSION est la version du pilote (par exemple, 2.23.1) et GPG_KEY_ID est l’une des clés suivantes IDs :

    Version du pilote ODBC

    ID de clé GPG

    2.22.1 et supérieur

    37C7086698CB005C

    Dans les paramètres ci-dessus, baseurl et gpgkey pointent vers le Snowflake Client Repository sur AWS S3. Si vous voulez utiliser le miroir sur Azure Blob à la place, remplacez le nom d’hôte par https://sfc-repo.azure.snowflakecomputing.com/ :

    [snowflake-odbc]
    name=snowflake-odbc
    baseurl=https://sfc-repo.azure.snowflakecomputing.com/odbc/linux/<VERSION>/
    gpgkey=https://sfc-repo.azure.snowflakecomputing.com/odbc/Snowkey-<GPG_KEY_ID>-gpg
    
  2. Exécutez la commande suivante pour installer le pilote :

    yum install snowflake-odbc
    

Installation du fichier TGZ

Pour installer le pilote ODBC de Snowflake pour Linux en utilisant le fichier TGZ que vous avez téléchargé précédemment.

  1. Copiez le fichier téléchargé (snowflake_linux_x8664_odbc-version.tgz) dans un répertoire fonctionnel.

  2. Décompressez le fichier :

    $ gunzip snowflake_linux_x8664_odbc-<version>.tgz
    
  3. Extrayez les fichiers du fichier.tar :

    $ tar -xvf snowflake_linux_x8664_odbc-<version>.tar
    
  4. Copiez le dossier snowflake_odbc résultant dans le répertoire dans lequel vous souhaitez installer le pilote. Prenez note du répertoire. Vous aurez besoin de l’emplacement plus tard dans les instructions.

Installation du pack RPM

Note

Le pack RPM nécessite unixODBC comme gestionnaire de pilotes.

Pour installer le pilote ODBC de Snowflake pour Linux à l’aide du pack RPM que vous avez téléchargé précédemment, après avoir vérifié éventuellement la signature du pack, exécutez la commande suivante :

$ yum install snowflake-odbc-<version>.x86_64.rpm

Note

Le répertoire d’installation est /usr/lib64/snowflake/odbc/. Vous aurez besoin de l’emplacement plus tard dans les instructions.

Installation du pack DEB

Note

Le pack DEB nécessite unixODBC comme gestionnaire de pilotes.

Pour installer le pilote ODBC de Snowflake pour Linux à l’aide du pack DEB que vous avez téléchargé précédemment, après avoir vérifié éventuellement la signature du pack, exécutez la commande suivante :

$ sudo dpkg -i snowflake-odbc-<version>.x86_64.deb

La commande peut échouer si aucune des dépendances requises pour le gestionnaire de packs n’est installée. Si cela se produit, installez-les maintenant :

$ sudo apt-get install -f

Note

Le répertoire d’installation est /usr/lib/snowflake/odbc/. Vous aurez besoin de l’emplacement plus tard dans les instructions.

Étape 3 : configuration de l’environnement (TGZ uniquement)

Note

Si vous avez installé le pilote ODBC en utilisant le fichier RPM ou DEB du pack, ignorez cette étape.

Si vous l’avez installé en utilisant le fichier TGZ, configurez l’environnement en utilisant le gestionnaire de pilotes installé (soit iODBC ou unixODBC).

Configuration avec iODBC

Dans une fenêtre de terminal, passez dans le répertoire snowflake_odbc et exécutez la commande suivante pour installer Snowflake ODBC :

$ ./iodbc_setup.sh

Ce script exécute les étapes suivantes :

  • Ajoute une connexion Snowflake à votre fichier de niveau système /etc/odbc.ini.

  • Ajoute les informations du pilote Snowflake à votre fichier de niveau système /etc/odbcinst.ini.

  • Ajoute tous les certificats d’autorité de certification (CA) requis par le pilote Snowflake ODBC à votre fichier simba.snowflake.ini de niveau système.

En exécutant iodbc_setup.sh, vous n’avez pas besoin de définir de variables d’environnement.

En outre, si vous ne voulez pas que Snowflake change la configuration de votre système, ajoutez les variables d’environnement suivantes à votre fichier de configuration shell (par ex. .profile, .bash_profile) :

  • ODBCINI = <chemin>/conf/odbc.ini

  • ODBCINSTINI = <chemin>/conf/odbcinst.ini

chemin est l’emplacement du répertoire snowflake_odbc. Si vous avez configuré d’autres pilotes ODBC dans votre système et prévoyez d’ajouter les entrées ODBC Snowflake à vos fichiers odbc.ini et odbcinst.ini existants à l’étape suivante, alors pointez ODBCINI et ODBCINSTINI vers l’emplacement de ces fichiers.

Configuration avec unixODBC

Dans une fenêtre de terminal, passez dans le répertoire snowflake_odbc et exécutez la commande suivante pour installer Snowflake ODBC :

$ ./unixodbc_setup.sh

Ce script exécute les étapes suivantes :

  • Ajoute une connexion Snowflake à votre fichier de niveau système /etc/odbc.ini.

  • Ajoute les informations du pilote Snowflake à votre fichier de niveau système /etc/odbcinst.ini.

  • Ajoute tous les certificats d’autorité de certification (CA) requis par le pilote Snowflake ODBC à votre fichier simba.snowflake.ini de niveau système.

En exécutant unixodbc_setup.sh, vous n’avez pas besoin de définir de variables d’environnement.

En outre, si vous ne voulez pas que Snowflake change la configuration de votre système, ajoutez les variables d’environnement suivantes à votre fichier de configuration shell, par ex. .profile, .bash_profile :

  • ODBCSYSINI = <chemin>/conf/

chemin est l’emplacement du répertoire snowflake_odbc. Si vous avez configuré d’autres pilotes ODBC dans votre système et prévoyez d’ajouter les entrées ODBC Snowflake à vos fichiers odbc.ini et odbcinst.ini existants à l’étape suivante, alors pointez ODBCSYSINI vers l’emplacement de ces fichiers.

Étape 4 : configuration du pilote ODBC

La configuration du pilote ODBC nécessite l’ajout d’entrées dans les fichiers suivants :

  • <chemin>/lib/simba.snowflake.ini

  • /etc/odbcinst.ini (ou <chemin>/conf/odbc.ini si vous utilisez des variables d’environnement)

  • /etc/odbc.ini (ou <chemin>/conf/odbcinst.ini si vous utilisez des variables d’environnement)

chemin est l’emplacement du répertoire snowflake_odbc.

4.1 : fichier simba.snowflake.ini (gestionnaire de pilotes et connexion)

Ajoutez les entrées suivantes au fichier simba.snowflake.ini :

ErrorMessagesPath=<path>/ErrorMessages/
LogPath=/tmp/
ODBCInstLib=<driver_manager_path>
CABundleFile=<path>/lib/cacert.pem
ANSIENCODING=UTF-8

Où :

  • chemin est l’emplacement du répertoire snowflake_odbc.

  • chemin_gestionnaire_pilotes est l’emplacement de votre répertoire du gestionnaire de pilotes :

    • iODBC : ODBCInstLib=libiodbcinst.so.2

    • unixODBC : ODBCInstLib=libodbcinst.so

    Note

    Si le répertoire de votre gestionnaire de pilotes n’est pas inclus dans la variable d’environnement LD_LIBRARY_PATH, indiquez ici le chemin complet vers la bibliothèque du gestionnaire de pilotes.

Vérifiez que vous avez les permissions d’écriture sur le chemin d’accès au journal.

Le paramètre ANSIENCODING spécifie l’encodage des caractères de l’application. La valeur par défaut est UTF-8. Le paramètre est destiné à être utilisé uniquement par Snowflake ; les clients ne doivent pas modifier la valeur.

4.2 : fichier odbcinst.ini (enregistrement de pilotes)

Ajoutez les entrées suivantes au fichier odbcinst.ini :

[ODBC Drivers]
SnowflakeDSIIDriver=Installed

[SnowflakeDSIIDriver]
APILevel=1
ConnectFunctions=YYY
Description=Snowflake DSII
Driver=/<path>/lib/libSnowflake.so
DriverODBCVer=03.52
SQLLevel=1

chemin est l’emplacement du répertoire snowflake_odbc.

4.3 : fichier odbc.ini (entrées DSN)

Pour chaque DSN, ajoutez les entrées suivantes au fichier odbc.ini :

  • Nom DSN et nom du pilote (SnowflakeDSIIDriver) au format <nom_dsn> = <nom_pilote>.

  • Paramètres :

    • Paramètres de connexion requis, tels que server.

    • Tout paramètre supplémentaire facultatif, par exemple role, database et warehouse par défaut.

    Les paramètres sont spécifiés sous forme de <nom_paramètre> = <valeur>. Pour plus de détails sur les paramètres qui peuvent être définis pour chaque DSN, voir Paramètres de configuration et de connexion ODBC.

L’exemple suivant illustre un fichier odbc.ini contenant deux pilotes, testodbc1 pour le compte xy12345 (situé dans la région AWS US Ouest) et testodbc2 pour le compte yz23456 (situé dans la région AWS US Est) :

[ODBC Data Sources]
testodbc1 = SnowflakeDSIIDriver
testodbc2 = SnowflakeDSIIDriver


[testodbc1]
Driver      = /usr/jsmith/snowflake_odbc/lib/libSnowflake.so
Description =
server      = xy12345.snowflakecomputing.com
role        = sysadmin


[testodbc2]
Driver      = /usr/jsmith/snowflake_odbc/lib/libSnowflake.so
Description =
server      = yz23456.us-east-1.snowflakecomputing.com
role        = analyst
database    = sales
warehouse   = analysis

Remarques :

  • testodbc1 et testodbc2 ont des rôles par défaut.

  • testodbc2 possède également une base de données et un entrepôt par défaut.

Étape 5 : test du pilote ODBC

Testez le pilote à l’aide du gestionnaire de pilotes installé (soit iODBC ou unixODBC).

Test avec iODBC

Testez les DSNs que vous avez créés. Sur la ligne de commande, spécifiez le nom DSN, le nom d’utilisateur et le mot de passe, en utilisant le format suivant :

iodbctest "DSN=<nom_dsn>;UID=<nom_utilisateur>;PWD=<mot de passe>"

Par exemple :

$ iodbctest "DSN=testodbc2;UID=mary;PWD=password"
iODBC Demonstration program
This program shows an interactive SQL processor
Driver Manager: 03.52.0709.0909
Driver: 2.12.70 (Snowflake)

SQL>

Test avec unixODBC

Testez les DSNs que vous avez créés en utilisant l’utilitaire de ligne de commande isql fourni avec unixODBC.

Sur la ligne de commande, spécifiez le nom DSN, le nom d’utilisateur et le mot de passe.

Par exemple :

$ isql -v testodbc2 mary <password>

Dec 14 22:57:50 INFO  2022078208 Driver::LogVersions: SDK Version: 09.04.09.1013
Dec 14 22:57:50 INFO  2022078208 Driver::LogVersions: DSII Version: 2.12.36
Dec 14 22:57:50 INFO  2022078208 SFConnection::connect: Tracing level: 4

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL>