在没有密码提示的情况下在bash脚本中运行PostgreSQL CLI(psql)?

Run PostgreSQL CLI (psql) in bash script without password prompt?

用户postgres通过bash脚本运行PostgreSQL CLI(psql)会导致发送密码提示,即使我可以在没有密码的情况下手动运行它。 当我尝试在脚本中放入-w时,会发生以下错误:

psql:fe_sendauth:没有提供密码

我可以在没有密码的情况下以自动方式运行psql吗?


您可以使用密码文件pgpass.conf或使用PGPASSWORD变量。

对于本地开发或安全性不是问题,您还可以通过修改pg_hba.conf文件将PostgreSQL配置为以信任身份验证模式运行。


只要您没有对从运行脚本的主机连接的特定用户进行身份验证,您就可以。 为此,您只需将以下行添加到服务器上的pghba.conf(您需要重新启动PostgreSQL守护程序):

1
host YOUR_DB YOUR_USER YOUR_IP trust

哪里:

  • YOUR_DB:数据库名称
  • YOUR_USER:您用来运行脚本的用户
  • YOUR_IP:脚本运行的IP
  • 其他选项可能是使用expect实用程序(假设您使用的是linux或某些unix变体或shell,例如cygwin)。