postgres备份脚本不是postgres用户

时间:2014-03-12 16:30:53

标签: postgresql shell pg-dump

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

为了在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

1 个答案:

答案 0 :(得分:9)

使用.pgpass文件保存pg_dump的密码,或设置PGPASSWORD环境变量。或者使用pg_hba.conf身份验证修改peer以允许无密码连接。

手册中对此进行了介绍:

a search for the error message会找到相关信息。