无法通过Linux上的节点连接到Postgresql DB

时间:2017-07-18 18:13:55

标签: node.js linux postgresql pg

当我尝试通过命令行连接到我的数据库(在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尝试连接时出现

错误。

2 个答案:

答案 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