备份postgres数据库密码问题

备份postgres数据库密码问题

我有一个 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

因此,我发现以系统用户身份运行该脚本是可行的。

  1. 我无法在没有设置密码的情况下运行它postgres

    $ sudo -i -u postgres

    $ psql

    $ ALTER USER postgres 使用密码'new_password';

  2. 然后.pgpass在运行该脚本的用户系统主目录中创建一个文件。

    $ echo'*:*:*:postgres:new_password'>~/.pgpass

    $ chmod 0600 ~/.pgpass

  3. 就是这样。

我的错误是:

  • 我想我不用设置 postgres 密码就可以处理它。
  • 尝试将 .pgpass 放在 /var/lib/postgresql (postgres 主目录) 而不是用户系统主目录中。

希望这有帮助!

相关内容