当我尝试通过命令行连接到我的数据库(在Linux机器上)时,我能够做到这一点:
$ psql -U me -W
Password for user me:
psql (9.5.7)
Type "help" for help.
me=#
我也可以在没有密码的情况下访问它:
$ psql -U me # this works
但是,当我尝试通过节点库knex
(仅使用pg
)连接时,我收到以下错误:
error: password authentication failed for user "me"
我认为它与在Linux中设置的Linux用户/ Postgres用户的组合有关,但我尝试过的任何东西都没有修复它。我尝试改变我的连接URL字符串,但即使是正确的(我认为)也不起作用:
DATABASE_URL=postgres://localhost:5432/mydb
DATABASE_URL=postgres://me:mypassword@localhost:5432/mydb
# (neither works)
我也尝试添加:
host mydb me 127.0.0.1/32 trust
到我的/etc/postgresql/9.5/main/pg_hba.conf
,但这也无济于事。
我很确定我必须以某种方式告诉Node“以正确的方式使用此用户/密码”......但我无法弄清楚如何。
任何帮助都将不胜感激。
修改
我尝试将/etc/postgresql/9.5/main/pg_hba.conf
设置为:
host all all 127.0.0.1/32 trust
host all al ::1/128 trust
或换句话说“让所有人都没有密码”。当我psql -W
它现在接受我输入的任何密码......但即便如此,我仍然得到:
error: password authentication failed for user "me"
当节点/ knex
/ pg
尝试连接时出现错误。
答案 0 :(得分:0)
UNIX域套接字似乎没有得到node.js的优惠待遇。
基于test for pg-connection-string
,我怀疑
socket:///var/run/postgresql/?db=mydb
应该有用。
答案 1 :(得分:0)
我结束了工作:
A)将规则添加到/etc/postgresql/9.5/main/pg_hba.conf
以始终信任localhost
上的连接:
host all all localhost trust
B)使用以下连接URL:
postgres://me:mypassword@localhost:5432/mydb