使用键值对(非PWD)时的odbc.ini文件配置

问题描述 投票:0回答:1

阅读文档这里

我想使用 odbc 连接 Snowflake。我已经能够通过将

.odbc.ini
添加到我的主目录并使用类似于以下的配置来实现此工作:

[snowflake]
Description=SnowflakeDB
Driver=SnowflakeDSIIDriver
Locale=en-US
SERVER=ourco.us-east-1.snowflakecomputing.com
PORT=443
SSL=on
ACCOUNT=ourco.us-east-1
UID=MY_NAME
PWD=$MyPassword

这有效。通过此配置,我可以创建连接并查询我们的数据库。

但是我想使用带有密钥的 odbc 而不是我的密码。按照 here 的指南创建密钥并将其添加到 SF 界面中。

然后我更新了我的 odbc.ini 文件:

[snowflake]
Description=SnowflakeDB
Driver=SnowflakeDSIIDriver
Locale=en-US
SERVER=ourco.us-east-1.snowflakecomputing.com
PORT=443
SSL=on
UID=MY_NAME
ACCOUNT=ourco.us-east-1
PRIV_KEY_FILE=/home/rstudio-blah/keys/rsa_key.p8 # this is where I stored the key
SNOWSQL_PRIVATE_KEY_PASSPHRASE=potatoes{ # not my real pwd

尝试连接此设置时,我收到错误消息:

错误:nanodbc/nanodbc.cpp:1021: 00000: [unixODBC][Snowflake][DSI] (20032) 连接设置中不存在所需的设置“PWD”。

我尝试添加

PWD=
只是想用空值来欺骗它,但后来得到:

错误:nanodbc/nanodbc.cpp:1021:00000:[unixODBC][Snowflake][Snowflake] (31) 找不到密码。

然后我尝试添加

AUTHENTICATOR=SNOWFLAKE_JWT
,这给出了错误:

错误:nanodbc/nanodbc.cpp:1021:00000:[unixODBC][Snowflake][Snowflake] (44) 完成设置时出错:编组私钥失败。

如何使用键值对而不是 PWD 通过 odbc 进行连接?

odbc snowflake-cloud-data-platform
1个回答
0
投票

在尝试使用 Snowflake 和 Posit (RStudio) 解决类似问题时发现了这篇文章。我注意到大部分内容已经在评论中了,但是总而言之,这对我有用:

odbc.ini

[snowflake]
Description=       SnowflakeDB
Driver=            SnowflakeDSIIDriver
SERVER=            ourco.us-east-1.snowflakecomputing.com
PRIV_KEY_FILE=     /home/rstudio-blah/keys/rsa_key.p8 
AUTHENTICATOR=     "SNOWFLAKE_JWT",
PRIV_KEY_FILE_PWD= "definedPassPhrase"

我的一些额外注释/学习内容是,路径和文件需要可供将执行 ODBC 连接的用户访问和读取,不要使用 root 进行配置。

在我的例子中,我使用 Active Directory 服务帐户进行连接,该帐户链接到密钥对,这也需要在 Snowflake 链接:

ALTER USER "[email protected]" SET
RSA_PUBLIC_KEY='YOURPUBLICKEY';

双引号表示用户,单引号表示公钥值

© www.soinside.com 2019 - 2024. All rights reserved.