postgresql - 为什么 pg_dump 没有在 cron 作业中获取密码?

标签 postgresql cron backup

我们正在使用 cron 作业在 Ubuntu 12.04 上备份 Postgres 数据库。 pg_dump 命令已添加到已运行以备份 SQLite 的 bash 脚本中。命令是:

pg_dump -U postgres -Fc mydbname > /home/myback_$now   #$now append last 2 digits of date to file name

在与 bash 脚本相同的主目录中创建了一个 .pgpass 文件:

localhost:5432:mydbname:postgres:mypassword

还有 chmod 600 .pgpass

问题是生成了备份文件,但是备份文件的大小都是0,在备份日志中,报错:

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

pg_dump 似乎没有正确引用 .pgpass 中的密码。备份配置中可能缺少什么?

最佳答案

如果像您在评论中所说的那样

sudo crontab -e

那么你正在编辑 root 的 crontab,而不是你自己用户的 crontab。

因此,将使用的主目录将是 root 的主目录(通常是/root,但我不确定是否适用于 Ubuntu)。

虽然您没有明确说明,但我猜您将 .pgpass 文件放在了用户的主目录中。

以 root 身份运行 pg_backup 不是必需的,甚至不是一个好主意,因此我建议将备份作业放在普通用户的 crontab 中。

关于postgresql - 为什么 pg_dump 没有在 cron 作业中获取密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24542823/

相关文章:

php - Cron 使缓存文件不可写

eclipse - 如何在编辑时自动选择性地备份关键文件?

postgresql - 无法使用带有复制命令的平面文件将数据插入到 postgresql 表中

sql - 如何在数据库中存储依赖树?

sql - 加速超过 60 亿次操作的 SQL 查询

algorithm - 开发可靠,简单的网络备份软件

c - 运行 C 程序备份 Linux 文件

c# - 如何从用于登录 C# 的字符串中删除不安全字符

python - 非特定时间一天一次的crontab?

python - 如何对 ipython jupyter 笔记本的单元进行 cron 操作?