Come impostare la password utente di postgresql nello script bash


12

Voglio impostare una password per l'utente server PostgreSQL predefinito, postgres. L'ho fatto usando:

sudo -u postgres psql
# \password postgres

Voglio fare questo passaggio su molte macchine, quindi vorrei creare uno bashscript per fare lo stesso. Come realizzare questo in bash?


Ha annullato la domanda: molte domande su Server Fault possono essere apprese da documentazione, libri, siti Web ... La persona che ha effettuato il downgrade non ti insegnerà a usare il mancomando. Assicurati di provare man psqlin futuro.

Risposte:


9

Come documentato , puoi eseguire meta-comandi tramite l' --commandopzione.

sudo -u postgres psql --command '\password postgres'

Le virgolette singole assicurano che la shell non tratti la barra rovesciata come un carattere di escape.


Grazie, ho appena fatto lo stesso, ma con una piccola differenza: sudo -u postgres psql --command "\password". Mi chiedo, perché la mia domanda è stata sottoposta a downgrade.
saji89,

@ saji89: Non è il mio downvote, ma immagino perché questo può essere facilmente appreso leggendo la documentazione.
Sven

@ saji89 Quando si usano le virgolette doppie, la shell considera la barra rovesciata come un carattere di escape, cioè come un'istruzione per trattare il personaggio successivo come un carattere letterale piuttosto che speciale. Per ottenere una barra rovesciata letterale all'interno di doppi qoutes devi usare "\\...".
Ansgar Wiechers,

@AnsgarWiechers, grazie per la correzione. Ma la parte divertente è che quella linea funziona per me. Da quello che ho letto su gnu.org/software/bash/manual/html_node/Double-Quotes.html Dice: The backslash retains its special meaning only when followed by one of the following characters: ‘$’, ‘`’, ‘"’, ‘\’, or newline.penso che sia per questo che ha "\password"funzionato bene.
saji89,

22

Invece di utilizzare il \passwordcomando psql , che prevede un terminale interattivo, è possibile utilizzare:

ALTER USER postgres WITH PASSWORD 'newpassword';

Dì, tramite un psql -ccomando:

sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'newpassword';"

WITH, not SET (15 caratteri)
ChocoDeveloper,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.