Jak ustawić hasło użytkownika postgresql w skrypcie bash


12

Chcę ustawić hasło dla domyślnego użytkownika Postgresql serwera postgres. Zrobiłem to za pomocą:

sudo -u postgres psql
# \password postgres

Chcę zrobić ten krok na wielu komputerach, dlatego chciałbym utworzyć bashskrypt, aby zrobić to samo. Jak to zrobić w bash?


Przegłosowałem pytanie: wiele pytań na temat usterki serwera można dowiedzieć się z dokumentacji, książek, stron internetowych ... Osoba, która głosowała na ciebie, nie nauczy Cię korzystania z manpolecenia. Pamiętaj, aby spróbować man psqlw przyszłości.

Odpowiedzi:


9

Jak udokumentowano , możesz uruchamiać meta-polecenia za pomocą --commandopcji.

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

Pojedyncze cudzysłowy zapewniają, że powłoka nie traktuje ukośnika odwrotnego jako znaku ucieczki.


Dzięki, ja po prostu zrobił to samo, ale z różnicy mniejszej: sudo -u postgres psql --command "\password". Zastanawiam się, dlaczego moje pytanie zostało odrzucone.
saji89,

@ saji89: To nie moja opinia, ale myślę, że można tego łatwo nauczyć się czytając dokumentację.
Sven

@ saji89 Gdy używasz podwójnych cudzysłowów, powłoka traktuje odwrotny ukośnik jako znak ucieczki, tj. jako instrukcję, aby traktować następny znak raczej jako literę niż znak specjalny. Aby uzyskać dosłowny odwrotny ukośnik w podwójnych qoutach, musisz użyć "\\...".
Ansgar Wiechers

@AnsgarWiechers, dzięki za korektę. Ale zabawne jest to, że ta linia działa dla mnie. Z tego, co przeczytałem na gnu.org/software/bash/manual/html_node/Double-Quotes.html Mówi: The backslash retains its special meaning only when followed by one of the following characters: ‘$’, ‘`’, ‘"’, ‘\’, or newline.Myślę, że właśnie dlatego "\password"działało dobrze.
saji89,

22

Zamiast używać \passwordkomendy psql , która oczekuje interaktywnego terminala, możesz użyć:

ALTER USER postgres WITH PASSWORD 'newpassword';

Powiedz za pomocą psql -cpolecenia:

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

Z, a nie SET (15 znaków)
ChocoDeveloper,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.