如果我以“ joe”用户身份登录服务器,请在服务器上运行以下命令:
dropdb --no-password --if-exists --user=someuser --host=someip somedb
它运行良好,因为我已经为/home/joe/.pgpass
填充了用于连接到someip的某些用户的适当凭据。
但是,在使用Fabric时,我发现一些奇怪的行为。即使我已将其配置为使用“ joe”作为用户,当它尝试运行相同的命令时,也会产生错误:
dropdb: could not connect to database template1: fe_sendauth: no password supplied
这是为什么?我能想到的唯一原因是结构/ SSH连接没有对~/.pgpass
的许可,但是我已经仔细检查了用户是否正确以及~/.pgpass
中是否存在正确的值。>
编辑:我意识到我正在运行sudo(cmd, user='postgres')
之类的Fabric的sudo,我想这可能是原因的一部分。但是,我检查了$HOME
的值,它仍然是/home/joe
,因此它仍然应该能够看到/home/joe/.pgpass
。为什么postgres用户不能访问它?