如何以非交互方式指定“psql”的密码?

我试图用一个shell脚本自动化数据库创建过程,但有一件事我遇到了一个障碍,那就是向psql传递密码。
下面是shell脚本中的一段代码:

psql-U$DB\U USER-h localhost-c“$DB\U RECREATE\U SQL”

如何以非交互方式将密码传递给psql

在调用psql之前,在脚本中设置PGPASSWORD环境变量

PGPASSWORD=pass1234 psql-U MyUsername myDatabaseName

有关参考,请参阅http://www.postgresql.org/docs/current/static/libpq-envars.html


编辑

自Postgres 9.2以来,还可以选择指定连接字符串或URI,其中可以包含用户名和密码。语法是:

$psql-postgresql://[user[:password]@][host][:port][,…][/dbname][?param1=value1&]

使用该选项会带来安全风险,因为其他用户在查看正在运行的进程的命令行时(例如,使用ps(Linux)、ProcessExplorer(Windows)或类似工具),密码以明文形式可见

另请参见有关数据库管理员的此问题

发表评论