2013-06-01 8 views
12

che sto cercando di fare questo in uno script:Creare un nuovo utente postgres programmaticamente, senza l'intervento interattivo

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

non voglio postgres di chiedere la password in modo interattivo, così voglio fare:

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

Dove /tmp/xxx contiene la password per il nuovo utente. Ma non funziona. Qualche idea su come farlo funzionare?

risposta

10

Potete farlo utilizzando SQL pianura dopo il collegamento come superutente (ad es postgres) per il database in questione:

create user user1 password 'foobar' 

Se avete bisogno di fare questo dall'interno di uno script si può mettere che in uno sql file e quindi passare questo a psql:

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

Dalla shell, si potrebbe usare un qui-documento, come:

#!/bin/sh 

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

BTW: Non penso che sia una buona idea memorizzare la password in /tmp/, nemmeno temporaneamente.

+0

Capisco ma ... come si immette una password in modo programmatico senza che * * sia *? Il modo in cui lo faccio: li ho in un file locale (testo normale) indicizzato dall'id della password (cioè il file delle password è password_id: password .Questo file è protetto e accedo con sudo. In questo modo posso centralizzare la mia gestione delle password, avendo un semplice servizio che fornisce l'accesso a questo file. – dangonfast

Problemi correlati