bash 스크립트에서 postgresql 사용자 비밀번호를 설정하는 방법


12

기본 Postgresql 서버 사용자의 비밀번호를 설정하고 싶습니다 postgres. 나는 그것을 사용하여 그것을했다 :

sudo -u postgres psql
# \password postgres

많은 컴퓨터 에서이 단계를 수행하고 싶으므로 bash동일한 작업을 수행 하는 스크립트를 만들고 싶습니다 . bash에서 이것을 달성하는 방법?


질문에 대한 찬성 : 서버 오류 에 대한 많은 질문 은 문서, 서적, 웹 사이트에서 배울 수 있습니다 man. man psql앞으로 시도하십시오 .

답변:


9

문서화 한대로 --command옵션을 통해 메타 명령을 실행할 수 있습니다 .

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

작은 따옴표는 쉘이 백 슬래시를 이스케이프 문자로 취급하지 않도록합니다.


고마워, 나는 방금 똑같이했지만 약간의 차이점이 sudo -u postgres psql --command "\password"있습니다. 궁금해, 왜 내 질문이 downvoted.
saji89

@ saji89 : 그것은 나의 downvote가 아니지만 문서를 읽으면 쉽게 배울 수 있기 때문에 추측합니다.
Sven

@ saji89 큰 따옴표를 사용하면 쉘은 백 슬래시를 이스케이프 문자로 처리합니다. 즉, 다음 문자를 특수 문자가 아닌 리터럴로 처리하는 명령으로 처리합니다. 이중 qoutes 안에 리터럴 백 슬래시를 얻으려면을 사용해야 "\\..."합니다.
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

\password대화식 터미널이 필요한 psql 명령 을 사용하는 대신 다음을 사용할 수 있습니다.

ALTER USER postgres WITH PASSWORD 'newpassword';

psql -c명령을 통해 말해 :

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

With, not
set
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.