bashスクリプトでpostgresqlユーザーパスワードを設定する方法


12

デフォルトのPostgresqlサーバーユーザーのパスワードを設定しますpostgres。私はそれを使ってそれをしました:

sudo -u postgres psql
# \password postgres

多くのマシンでこのステップを実行したいのでbash、同じことを行うスクリプトを作成したいと思います。これをbashで実現する方法は?


質問に賛成票を投じた:サーバーフォールトに関する多くの質問は、ドキュメント、書籍、Webサイトから学ぶことができますmanman psql今後もお試しください。

回答:


9

文書化され、あなたは経由のメタコマンドを実行することができます--commandオプション。

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

単一引用符は、シェルがバックスラッシュをエスケープ文字として扱わないようにします。


おかげで、私は同じことをしましたが、わずかな違いがありますsudo -u postgres psql --command "\password"。私の質問がなぜ投票されたのか疑問に思う。
saji89

@ saji89:それは私のダウン投票ではありませんが、これはドキュメントを読むことで簡単に学ぶことができるからです。
スヴェン

@ saji89二重引用符を使用すると、シェルはバックスラッシュをエスケープ文字として、つまり次の文字を特殊文字ではなくリテラルとして扱うための命令として扱います。ダブルqoutes内で文字通りバックスラッシュを取得するには、を使用する必要があります"\\..."
アンスガーウィーチャーズ

@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';"

SETではなくWITH(15文字)
ChocoDeveloper
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.