2014-03-12 62 views
3

我想创建一个postgres备份脚本,但我不想使用postgres用户,因为我所在的unix系统有很少的限制。我想要做的是在crontab上以UNIX系统(网络)的常规用户身份运行此脚本,并在脚本中使用数据库管理员帐户。postgres备份脚本不是postgres用户

只是为了使其在UNIX系统(网络)我有用户foo清楚,现在我们有postgres用户谁是默认Postgres的用户,然后在数据库中,我们有一个数据库管理员用户my_db_admin。我脚本以网络用户foo使用my_db_admin用户和脚本中的凭据执行。

这是我开始的,但问题是当我执行脚本时,它给出了一个错误,说没有提供密码。

#!/bin/bash 
export PASSWORD="MyPassword" 
backup_dir="/BACKUP/LOCATION" 
# name of the backup file has the date 
backup_date=`date +%d-%m-%Y` 
# only keep the backup for 30 days (maintain low storage) 
number_of_days=30 
pg_dump -Fc -Umy_db_admin MyDatabase -w > $backup_dir\_$backup_date 
find $backup_dir -type f -prune -mtime +$number_of_days -exec rm -f {} \; 

以下是错误:

pg_dump: [archiver (db)] connection to database "MyDatabase" failed: fe_sendauth: no password supplied 
+0

你在哪里提供'PASSWORD'到'pg_dump'? –

+0

@ MilenA.Radev我想我不知道我怎么能把它放在pg_dump –

+2

那么,阅读[the](http://www.postgresql.org/docs/current/static/app-pgdump.html)[罚款](http://www.postgresql.org/docs/current/static/libpq-envars.html)[docs](http://www.postgresql.org/docs/current/static/libpq-pgpass.html)是一个好的开始。 –

回答