2015-08-08 208 views
0

我正在尝试在NodeJS a la this link中编写一个todo应用程序。从M $切换到NodeJS。如何使用应用程序用户连接到数据库?

我想有一个单独的用户帐户,所以我

sudo useradd pg_todo_app_usersudo passwd pg_todo_app_user

bash神的微笑。

然后,想传达给我已经得到过未来用户的PostgreSQL服务器,我尝试以下方法:

$ su - postgres 
Password: 
$ psql todo 
psql (9.4.4) 
Type "help" for help. 

todo=# CREATE USER pg_todo_app_user WITH PASSWORD 'password!' 
todo-# GRANT ALL PRIVILEGES ON DATABASE todo to pg_todo_app_user 
todo-# \q 
$ exit 

到目前为止,大家都高兴。除了当我试试这个:

$ node database.js 
events.js:85 
    throw er; // Unhandled 'error' event 
     ^
error: password authentication failed for user "pg_todo_app_user" 

这里是我的连接字符串:

var connectionString = process.env.DATABASE_URL || 'postgresql://pg_todo_app_user:[email protected]:5432/todo';

我查了下,输出并不乐观:

todo=# -c \du 
          List of roles 
Role name |     Attributes     | Member of 
-----------+------------------------------------------------+----------- 
postgres | Superuser, Create role, Create DB, Replication+| {} 
      | Password valid until infinity     | 

...这是它。我错过了什么或做错了什么?

回答

2

如果要在同一主机上运行和的NodeJS PostgreSQL服务器则解决方案可能是您的pg_hba.conf文件改成这样:

host todo    pg_todo_app_user    127.0.0.1/32   md5 
host todo    pg_todo_app_user    ::1/128     md5 

然后重新启动Postgres的服务器,然后再试一次。

+0

想要标记为答案,因为它看起来像它适合的文档,但不幸的是,我在这种情况下尝试它,它不起作用。 CREATE ROLE似乎是db上的正确命令。 –

相关问题