Если я войду на сервер как пользователь "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
Почему это так?Единственная причина, по которой я могу думать, это то, что соединение Fabric / SSH не имеет разрешения на ~/.pgpass
, но я дважды проверил, что пользователь правильный и что в ~/.pgpass
.
есть правильные значения.Редактировать: я понял, что я запускаю sudo Fabric как sudo(cmd, user='postgres')
, что, я думаю, является частью причины.Тем не менее, я проверил значение $HOME
, и оно все еще /home/joe
, поэтому оно все еще должно видеть /home/joe/.pgpass
.Почему пользователь postgres не может получить к нему доступ?