我在大学里使用了两个工具,它们都使用同一个 postgres 数据库。用 Java 编写的那个使用 jdbc-driver 并且工作得很好。
用 C++ 编写的第二个有一些困难。它给了我以下错误
Ident authentication failed for user "xyz"
连接字符串如下所示
dbname=myDB user=xyz hostaddr=127.0.0.1 port=5432 connect_timeout=10 password=myPW
我检查了 10 次这样的值,两个应用程序中的值完全相同。我认为它可能是 pg_hba.cfg。所以我尝试了很多,终于把所有的门都打开了:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
local all postgres ident
local all all password
# IPv4 local connections:
host all all 192.168.185.0/24 trust
host all postgres 127.0.0.1/32 ident
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 ident
怎么可能,尽管给出了密码,但 C++ 工具总是尝试使用缩进身份验证方法。(或者是 db..?) libpqxx 中是否有任何特殊情况我需要注意?