【问题标题】:pgpass file that uses variables?使用变量的pgpass文件?
【发布时间】:2021-10-20 12:54:52
【问题描述】:

我正在处理一个使用 psql 连接到 postgres 的 docker 映像。

我的入口点:

psql analytics \
  --host=${INPUT_HOST} \
  --username=analytics \
  --port=32648

如果我运行它,系统会提示我输入密码,我输入它并能够连接。太好了。

但如果我尝试自动输入密码,我会收到错误:

psql analytics \
  --host=${INPUT_HOST} \
  --username=analytics \
  --port=32648 \
  --password=${INPUT_PASSWORD}

/usr/lib/postgresql/13/bin/psql: 选项 '--password' 不允许参数 尝试“psql --help”以获取更多信息。

我发现了一些关于使用 .pgpass 的文档,这个要添加到用户主目录的文件采用以下形式:

hostname:port:database:username:password

现在我将不得不做类似的事情:

${INPUT_HOST}:5432:analytics:analytics:${INPUT_PASSWORD}

然后在添加到图像之前对该文件进行 envsubst 或 sed。

开放式问题,有没有更好/更方便的方法? ${INPUT_PASSWORD} 来自 docker 机密。无论如何我可以将密码传递给我对 psql 的调用吗?

【问题讨论】:

    标签: psql


    【解决方案1】:

    最好的方法是使用连接字符串:

    psql "password='${INPUT_PASSWORD}' dbname=analytics host='${INPUT_HOST}' user=analytics port=32648"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 2020-03-27
      • 2015-06-23
      • 2021-11-15
      • 2011-01-19
      相关资源
      最近更新 更多