【问题标题】:PSQL does not detect .pgpass filePSQL 不检测 .pgpass 文件
【发布时间】:2018-05-18 21:06:53
【问题描述】:

我试过了

  1. 设置.pgpass的权限为0600
  2. 已确认 .pgpass 位于我用户的主目录 (/home/brandon/.pgpass) 中
  3. 在 pg_dumpall 命令中使用 -w
  4. 确认 .pgpass 中的数据正确

如果我一次又一次地输入密码,自动备份的脚本 (https://wiki.postgresql.org/wiki/Automated_Backup_on_Linux) 就可以工作,这就是我在所有命令中添加 -w 的原因。由于某种原因,它不读取 .pgpass 文件。

有多个错误消息,但它们通常是这样的。

 pg_dumpall: could not connect to database "template1": FATAL:  password    authentication failed for user "postgres"

致命:用户“postgres”的密码验证失败

pg_pass 文件:

localhost:5432:my_db:postgres:password

命令行:

username@droplet:~/ProjectDir$ bash cronjob/db_backup/pg_backup.sh
Making backup directory in /home/backups/database/postgresql/2017-12-06/


Performing globals backup
--------------------------------------------

Globals backup
cronjob/db_backup/pg_backup.sh: line 80: /home/backups/database/postgresql/2017-12-06/globals.sql.gz.in_progress: Permission denied
pg_dumpall: could not connect to database "template1": fe_sendauth: no      password supplied

[!!ERROR!!] Failed to produce globals backup


Performing schema-only backups
--------------------------------------------

psql: fe_sendauth: no password supplied
The following databases were matched for schema-only backup:




Performing full backups
--------------------------------------------

psql: fe_sendauth: no password supplied

All database backups complete!

【问题讨论】:

  • 查看 PostgreSQL 服务器日志。显示您的 .pgpass 文件(不包括密码)和命令行。
  • 我添加了 pgpass 和命令行输出,打算弄清楚如何找到服务器日志

标签: postgresql


【解决方案1】:

您应该向pg_dumppg_dumpall 提供实际调用以获得更详细的答案。

但是,从您的输出中,我看到 pg_dumpall (?) 尝试连接到数据库 template1,但在您的 .pgpass 文件中,唯一的数据库是 my_db

您必须在.pgpass 中为您尝试连接的所有数据库添加条目。

localhost:5432:mydb1:postgres:password
localhost:5432:mydb2:postgres:password
localhost:5432:mydb3:postgres:password

或者,您也可以将* 作为不同数据库名称的占位符。

localhost:5432:*:postgres:password

确保.pgpass 中的所有字段都是正确/匹配的。如果其中任何一个(主机、端口等)不匹配,则不清楚、无信息且可能是错误的fe_sendauth: no password supplied 错误消息将是相同的。

【讨论】:

  • 我确实提供了对 pg_dump 和 pg_dumpall 的调用。我链接的脚本是除了将 -w 添加到所有调用之外。
  • 您必须在.pgpass 中为您要连接的每个数据库添加一行。
  • 明白。我明天试试。 12 点在这里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
相关资源
最近更新 更多