我想用crontab运行一个脚本来备份PostgreSQL数据库。
我的脚本如下:
#!/bin/bash
current_date=`date +%Y-%m-%d`
# Delete old backups
find /home/ubuntu/backups/ * -mtime +1 -delete
# Do a full postgres cluster
pg_dump dbname | gzip > /home/ubuntu/backups/$current_date.gz
文件的所有者是root用户,我可能需要更改它...
使用sudo执行脚本时,我看到:
pg_dump:[archiver(db)]与数据库的连接" easydjango"失败:致命:角色" root"不存在
我该怎么做?
答案 0 :(得分:0)
您可以通过为pg_dump设置-U选项来传递正确的凭据。
https://www.postgresql.org/docs/current/static/app-pgdump.html
如果您不想提示输入密码,则需要设置PGPASSWORD环境变量。
export PGPASSWORD=mypass
pg_dump -U myuser ...
答案 1 :(得分:0)
如果未明确指定,PostgreSQL会将osuser本身视为pguser。在给出pgdump时,您需要指定用户属性。
此外,您指定的用户名应该对要转储的数据库具有足够的权限。
我建议您创建此链接https://www.postgresql.org/docs/current/static/libpq-pgpass.html中指定的PostgreSQL密码文件,然后尝试转储。