2015-08-08 135 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上的正確命令。 –

相關問題