备份PostgreSQL – 提示input密码

操作系统:Ubuntu Xenial 16.04 LTS

PostgreSQL版本:9.5.4

我试图在我的服务器上设置自动数据库备份,每次运行pg_dump ,都会告诉我没有提供密码。 这里是我用来testing的命令:

 pg_dump --host $DB_HOST --port 5432 --username $DB_USER --no-password --format custom --blobs --verbose --file ~/backups/postgresql/test.backup $DB_NAME 

我所有的环境variables都工作得很好。 为了向PostgreSQL提供密码,我在~/.pgpass创build了一个.pgpass文件。 以下是它的样子:

#hostname:port:database:username:password $ DB_HOST:5432:$ DB_NAME:$ DB_USER:$ DB_PASS

该文件具有0600权限,如指南中所述。 但是,由于某种原因,每次运行pg_dump时都不会使用密码。 我在网上查看了其他答案和多个指南,但仍然无法弄清楚问题所在。

任何帮助将不胜感激。

你需要在~/.pgpass有字面值,而不是像$DB_HOST这样的shellvariables。

如果你需要环境variables,那么你可以使用libpq(PostgreSQL客户端库)支持的那些,比如$PGDATABASE或者$PGPASSWORD 。 还有很多其他的 。 你根本不需要~/.pgpass就可以了。