【发布时间】:2013-04-07 20:01:25
【问题描述】:
我使用名为 postgres 的本地计算机帐户安装了带有 Windows 服务的 pgAgent。我已确认 Windows 服务运行正常。我在 pgAdmin 中创建了一个作业,应该从我的客户数据库中的表中删除某些记录。作业中的唯一步骤是配置到客户数据库的本地连接类型。问题是,作业每次都会失败,并在 Windows 事件日志中写入以下警告:
Failed to create new connection to database 'customer':'fe_sendauth: no password supplied'
我已验证在 C:\Users\postgres\AppData\Roaming\postgresql 中有一个 pgpass.conf 文件。以下是它的内容:
localhost:5432:postgres:postgres:<password_redacted>
我不确定还可以尝试什么。我无法找到有关此错误消息的任何进一步信息,因为它适用于 pgAgent。
版本信息:
- PostgreSQL 9.2.4,由 Visual C++ build 1600 编译,64 位
- pgAdmin 1.16.1
- pgAgent v3.3.0-1
Windows服务启动信息:
C:\Program Files (x86)\pgAgent\bin\pgagent.exe RUN pgAgent host=localhost port=5432 user=postgres dbname=postgres
pg_hba.conf的非注释内容:
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
【问题讨论】:
-
你忘了顶提你的 Postgres 和 pgAdmin 版本。数据库日志中有任何内容吗?你的
pg_hba.conf中有什么。阅读this related answer 是否有帮助(特别是关于 Windows 的部分)? -
按要求添加。此外,另一篇文章涉及 psql.exe,因此问题并不完全相同。这是一项 Windows 服务这一事实使得调试 IMO 变得更加困难。
-
我想知道这是否与 localhost 与本地有关?即使是这样,我仍然不确定必须更改什么。
-
通常,数据库日志文件包含有关登录尝试失败的其他详细信息。也许您正在尝试与不同的用户建立联系?或者
pgpass.conf没有正确的权限? -
我确实检查了文件的权限,是的,
postgresWindows 用户对文件具有完全控制权限。我还使用 Process Monitor 验证了该文件实际上是由 pgagent.exe 打开和读取的。我检查了数据库日志文件,他们唯一说的是连接尝试失败。
标签: postgresql pgagent