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

时间:2012-05-04 18:23:34

标签: postgresql

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

psql:fe_sendauth:没有提供密码

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

2 个答案:

答案 0 :(得分:11)

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

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

答案 1 :(得分:1)

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

host YOUR_DB YOUR_USER YOUR_IP trust

其中:

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