如何在bash脚本中设置Postgresql用户密码


12

我想为默认的Postgresql服务器用户设置密码postgres。我通过使用以下方法做到了:

sudo -u postgres psql
# \password postgres

我想在许多机器上执行此步骤,因此我想创建一个bash脚本来执行相同的操作。如何在bash中做到这一点?


提出问题:可以从文档,书籍,网站中了解有关Server Fault的许多问题...做出否决的人不会教您使用该man命令。请确保man psql将来尝试。

Answers:


9

文档所述,您可以通过该--command选项运行元命令。

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

单引号确保外壳程序不会将反斜杠视为转义字符。


谢谢,我只是做了同样的事情,但有一点点不同:sudo -u postgres psql --command "\password"。想知道为什么我的问题被否决了。
saji89

@ saji89:这不是我的不赞成,但我想是因为可以通过阅读文档轻松地了解这一点。
斯文

@ saji89使用双引号时,shell将反斜杠视为转义字符,即作为将下一个字符视为文字而不是特殊字符的指令。要在双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,未设置(15个字符)
ChocoDeveloper
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.