【问题标题】:How to connect to docker postgres server via psql with password the right way and non interactively?如何以正确的方式和非交互方式通过 psql 使用密码连接到 docker postgres 服务器?
【发布时间】:2020-07-04 02:38:53
【问题描述】:

我正在尝试连接到我在 nuc 上的 docker 容器中运行的 postgres 服务器。如何以非交互方式管理这个,以便我可以通过 bash 运行命令?

操作系统 = 16.04 UBUNTU

Docker 容器 = https://docs.docker.com/engine/examples/postgresql_service/

我用来在我的 postgres 服务器中输入 docker 用户名和 docker 数据库的命令:

psql -h localhost -p 5432 -d docker -U docker

正如预期的那样,我被要求输入一个可以交互执行的密码,但我希望能够从其他地方安全地引用该密码,这样我就可以将命令传递给 psql 以运行而无需输入密码。我该怎么办?

例如,我计划每周运行一次以加载数据:

psql -h localhost -p 5432 -d docker -U docker --password --c "\COPY ems_stage FROM 'Desktop/ems/ems_raw.csv' WITH (format csv,header);"

作为一种轻微的解决方法,我一直在尝试像 psql 命令一样在没有密码的情况下运行代码:

psql -h localhost -p 5432 -d docker -U docker -w

但我收到以下错误:psql: fe_sendauth: no password supplied

【问题讨论】:

    标签: postgresql docker ubuntu psql


    【解决方案1】:

    我相信我已经弄清楚了如何做到这一点:

    由于我正在运行 psql 命令,因此我将密码放在文档中引用的 .pgpass 文件中,然后将命令定向到该文件:

    PGPASSFILE=.pgpass psql -h localhost -U docker -d docker -w --c "\COPY ems_stage FROM 'Desktop/ems/ems_raw.csv' WITH (format csv,header);"
    

    【讨论】:

    • 对我来说,它只适用于添加引号:PGPASSFILE='/custom/path/.pgpass-customname'
    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 1970-01-01
    相关资源
    最近更新 更多