我使用证书身份验证(而不是密码)连接到我的PostgreSQL数据库(在AWS EC2实例上运行)。我将用于连接到我的一个数据库的psql命令的示例是:
ID1 ID2 Count Code
0 abc def 7 B
1 fizz buzz 5 A
2 fizz1 buzz2 9 C
3 foo bar 6 A
4 foo bar 6 A
我希望能够将Tableau Desktop连接到我的一个数据库。标准的PostgreSQL连接器不允许我指定要使用的SSL证书(但是它确实具有“需要SSL”复选框-我认为这是用于加密而非身份验证)。
因此,我尝试使用ODBC连接器。我输入以下内容:
psql "host=<AWS EC2 instance> user=<db user> sslcert=<path to .crt> sslkey=<path to .key> sslrootcert=<path to .crt> sslmode=require dbname=<db name>"
通过反复试验,我认为String Extras需要使用分号作为分隔符,但我仍然无法连接。我收到错误消息:
Connect Using
Driver: PostgreSQL Unicode
Connection Attributes
Server: <AWS EC2 instance>
Port: 5432
Database: <db name>
Username: <db user>
String Extras: sslcert=<path to .crt>; sslkey=<path to .key>; sslrootcert=<path to .crt>; sslmode=require
我非常感谢听到使用证书身份验证将Tableau Desktop连接到PostgreSQL的任何人的消息,并能告诉我我做错了什么。干杯!
答案 0 :(得分:1)
我设法自己解决了这个问题,以防万一某个人可能隐约地有兴趣,我将介绍以下重要功能:
1。创建了DSN(数据存储名称)
sudo
的身份运行它,否则它不会创建任何内容。/Users/<user name>/.odbc.ini
brew install psqlodbc
和/或brew install unixodbc
DBNAME <db name>
SSLMODE verify-ca
(从require
更改为特定行为-如果提供了SSL证书,则psql假定verify-ca / verify-full)Pqopt
(值sslcert=<path to .crt> sslkey=<path to .key> sslrootcert=<path to .crt>
)设置证书路径。必须为小写字母,且条目之间只能有空格!这是它添加到我的用户的odbc.ini文件中的内容:
[<DSN name>]
Driver = <path to driver, this was mine /usr/local/lib/psqlodbcw.so>
Description = <description>
SSLMODE = verify-ca
HOST = <host>
DBNAME = <database>
PORT = 5432
UID = <db user>
Pqopt = sslcert=<path to .crt> sslkey=<path to .key> sslrootcert=<path to .crt>
2。 Tableau Desktop连接
希望这会有所帮助。让我知道您是否有任何疑问。