我正试着创建一个cronjob,在灾难发生之前每晚备份我的数据库。看起来这个命令应该能满足我的需求:
0 3 * * * pg_dump dbname | gzip > ~/backup/db/$(date +%Y-%m-%d).psql.gz
只是在运行之后,它要求我输入密码。如果我从cron运行它,我就做不到这一点。我怎样才能自动输入一个?
我正试着创建一个cronjob,在灾难发生之前每晚备份我的数据库。看起来这个命令应该能满足我的需求:
0 3 * * * pg_dump dbname | gzip > ~/backup/db/$(date +%Y-%m-%d).psql.gz
只是在运行之后,它要求我输入密码。如果我从cron运行它,我就做不到这一点。我怎样才能自动输入一个?
当前回答
$ PGPASSWORD="mypass" pg_dump -i -h localhost -p 5432 -U username -F c -b -v -f dumpfilename.dump databasename
其他回答
@Josue Alexander Ibarra回答适用于centos 7和9.5版本 如果——dbname没有被传递。
pg_dump postgresql://username:password@127.0.0.1:5432/mydatabase
这一行帮助我创建一个数据库的转储。
PGPASSWORD="yourpassword" pg_dump -U postgres -h localhost mydb > mydb.pgsql
另一种(可能不安全)传递密码的方法是使用输入重定向,即调用
Pg_dump [params] <[包含密码的文件路径]
注意,在windows中,pgpass.conf文件必须在以下文件夹中:
%APPDATA%\postgresql\pgpass.conf
如果%APPDATA%文件夹中没有postgresql文件夹,创建它。
pgpass.conf文件内容如下:
localhost:5432:dbname:dbusername:dbpassword
干杯
你只需要打开pg_hba.conf并在所有方法中设置信任。这对我来说很合适。因此,安全是空的。