我正在尝试使用 shell 脚本自动执行数据库创建过程,但我遇到了向其传递密码的障碍psql https://en.wikipedia.org/wiki/PostgreSQL#Database_administration。
下面是 shell 脚本中的一些代码:
psql -U $DB_USER -h localhost -c"$DB_RECREATE_SQL"
我如何将密码传递给psql
以非交互方式?
在调用 psql 之前在脚本内设置 PGPASSWORD 环境变量
PGPASSWORD=pass1234 psql -U MyUsername myDatabaseName
作为参考,请参阅http://www.postgresql.org/docs/current/static/libpq-envars.html http://www.postgresql.org/docs/current/static/libpq-envars.html
Edit
从 Postgres 9.2 开始,还可以选择指定连接字符串或 URI http://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-CONNSTRING可以包含用户名and密码。语法是:
$ psql postgresql://[user[:password]@][host][:port][,...][/dbname][?param1=value1&...]
使用它会带来安全风险,因为在查看正在运行的进程的命令行时,密码以纯文本形式可见,例如使用ps
(Linux)、ProcessExplorer (Windows) 或其他用户的类似工具。
另请参阅此问题数据库管理员 https://dba.stackexchange.com/q/14740/1822
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)