2013-06-01 21 views
12

我試圖做到這一點的腳本:創建一個新的Postgres用戶編程,無需互動干預

» sudo -u postgres createuser -PE -s user1 
Enter password for new role: 

我不想postgres索要交互密碼,所以我想做的事:

» sudo -u postgres createuser -PE -s user1 < /tmp/xxx 

其中/tmp/xxx包含新用戶的密碼。但它不起作用。任何想法如何得到這個工作?

回答

10

你可以做,問題用簡單的SQL連接爲一個超級用戶後(如postgres)到數據庫:

create user user1 password 'foobar' 

如果您需要在腳本中做到這一點,你可以將它放入一個sql文件,然後通過這PSQL:

 
» sudo -u postgres psql --file=create_user.sql 
2

從貝,你可以使用這裏的文檔,如:

#!/bin/sh 

psql -U postgres postgres <<OMG 
CREATE USER lutser password '`cat /tmp/xxx`' ; 
OMG 

順便說一句:我不認爲這是一個好主意,在/tmp/存儲密碼,甚至暫時。

+0

我明白了,但是......你如何以編程方式輸入密碼,而沒有*某處*?我這樣做的方式是:我將它們放在一個本地文件(純文本)中,並由密碼id進行索引(即密碼文件爲password_id:password。該文件受保護,我可以使用sudo進行訪問。我的密碼管理,通過一個簡單的服務提供訪問這個文件。 – dangonfast

相關問題