我每天都有一个 cron 作业来转储我的数据库。crontab 的一部分包括以下内容:
01 01 * * * root /etc/cron.d/backupDaily.sh
部分备份脚本包含以下内容:
cd /data/pgsql/
sudo -u postgres /usr/pgsql-12/bin/pg_dumpall>/data/pgsql/pg.sql
我的旧笔记提到将凭据放入文件中,例如/.pgpass
. 然而,从一开始我已经升级了我的服务器几次,而且我似乎不再有这个文件了。
谁能告诉我如何摆脱这个困境?这是否表明我的postgres
用户没有密码?
这是我的文件中的内容pg_hba.conf
:
# TYPE DATABASE USER ADDRESS METHOD
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 192.168.0.0/24 trust
host all all 192.168.1.0/24 trust
host all all 192.168.77.0/24 trust
线路
pg_hba.conf
允许通过信任身份验证进行本地连接,即无需密码。这就是为什么即使没有密码文件,您的备份脚本也能正常工作。
用户
postgres
可能仍然有密码。作为超级用户,您可以使用以下命令查看密码哈希“.pgpass”通常是用户主目录中的隐藏文件(而不是像您的符号所暗示的那样位于根目录中 - 如果您提到 crontab 适用于 root 用户并以 root 身份运行脚本这一事实,则在大多数系统上,主目录root 的目录将是“/root/”或其他内容,而不是“/”)。升级 PostgreSQL 服务器与此无关。只要您没有采取任何措施来破坏它,它仍然可以像旧服务器一样在新服务器上运行。升级服务器的操作系统可能会使该文件消失,具体取决于您的操作方式。
您可以通过在 psql 中使用 -W 开关来测试这一点,然后在提示符下输入明显错误的密码。如果这给您带来密码错误,那么无论您是否知道,您都可能拥有有效的 .pgpass 文件。或者您可以
ls -a
在您的(root 的)主目录中运行以显示隐藏的文件。