我有一个 Postgres 数据库,需要定期备份。为此,我想使用自动备份脚本这里
通常我使用这些命令来执行管理任务:
> sudo -i -u postgres
> psql
不需要密码,我可以手动转储我的数据库。还不错。
使用自动脚本时,我遇到了密码问题。它要求我输入postgres
密码。我从未设置过密码,我认为我不需要设置密码,正如上面给出的示例所示。
以下是我的配置方式pg_hba.conf
。
# Database administrative login by Unix domain socket
local all postgres peer
TYPE DATABASE USER ADDRESS METHOD
"local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
我是否真的需要设置postgres
密码来运行我的脚本?
答案1
如果你以 root 身份运行脚本:
sudo -u postgres psql
visudo
如果您以其他系统用户身份运行脚本,请在执行上述命令之前为该用户添加 sudo 权限。
<Systemuser> ALL=(postgres) NOPASSWD: /usr/bin/psql
答案2
因此,我发现以系统用户身份运行该脚本是可行的。
我无法在没有设置密码的情况下运行它
postgres
$ sudo -i -u postgres
$ psql
$ ALTER USER postgres 使用密码'new_password';
然后
.pgpass
在运行该脚本的用户系统主目录中创建一个文件。$ echo'*:*:*:postgres:new_password'>~/.pgpass
$ chmod 0600 ~/.pgpass
就是这样。
我的错误是:
- 我想我不用设置 postgres 密码就可以处理它。
- 尝试将 .pgpass 放在 /var/lib/postgresql (postgres 主目录) 而不是用户系统主目录中。
希望这有帮助!