Як встановити пароль користувача postgresql у скрипті bash


12

Я хочу , щоб встановити пароль для користувача Postgresql сервера за замовчуванням postgres. Я зробив це за допомогою:

sudo -u postgres psql
# \password postgres

Я хочу зробити цей крок у багатьох машинах, тому я хотів би створити bashсценарій для того ж. Як досягти цього в басі?


Захищене питання: Багато питань про помилку сервера можна дізнатись із документації, книг, веб-сайтів ... Людина, яка звернулася до вас, не навчить вас використовувати manкоманду. Не забудьте спробувати man psqlв майбутньому.

Відповіді:


9

Як задокументовано, ви можете запускати мета-команди за допомогою --commandпараметра.

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

Одиничні лапки гарантують, що оболонка не сприймає зворотну косу рису як евакуаційний символ.


Спасибі, я просто зробив те ж саме, але з різницею в незначній: sudo -u postgres psql --command "\password". Цікаво, чому моє запитання було скасовано.
saji89

@ saji89: Це не моя суть, але я думаю, тому що це можна легко дізнатися, прочитавши документацію.
Свен

@ saji89 Коли ви використовуєте подвійні лапки, оболонка розглядає звороту косу рису як символ втечі, тобто як інструкцію ставитися до наступного символу як до прямого, а не до спеціального символу. Для отримання прямої косої риски всередині подвійних квот потрібно використовувати "\\...".
Ansgar Wiechers

@AnsgarWiechers, Дякую за виправлення Але найсмішніше те, що ця лінія працює для мене. З того, що я прочитав на сайті gnu.org/software/bash/manual/html_node/Double-Quotes.html сказано: The backslash retains its special meaning only when followed by one of the following characters: ‘$’, ‘`’, ‘"’, ‘\’, or newline.Я думаю, що тому "\password"добре працював.
saji89

22

Замість використання команди psql \password, яка очікує інтерактивний термінал, ви можете використовувати:

ALTER USER postgres WITH PASSWORD 'newpassword';

Скажіть за допомогою psql -cкоманди:

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

З, а не SET (15 символів)
ChocoDeveloper
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.