Ответ 1
Вероятно, хорошая идея оставить пользователя postgres с идентификационной аутентификацией. По умолчанию я полагаю, что Ubuntu использует пользователя postgres для выполнения обновлений, резервных копий и т.д., И это требует, чтобы он мог войти в систему без указанного пароля.
Я рекомендую создать другого пользователя (возможно, с вашим собственным именем пользователя) и предоставить ему привилегии администратора. Затем вы можете использовать этого пользователя с паролями в локальных соединениях.
Вот как выглядят соответствующие части моего pg_hba.conf:
# allow postgres user to use "ident" authentication on Unix sockets
# (as per recent comments, omit "sameuser" if on postgres 8.4 or later)
local all postgres ident sameuser
# allow all other users to use "md5" authentication on Unix sockets
local all all md5
# for users connected via local IPv4 or IPv6 connections, always require md5
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Также обратите внимание, что psql -U postgres password
не будет делать то, что вы хотите. Пароль не должен указываться в командной строке. Это попытается войти в систему как пользователь "postgres" в базу данных с именем "пароль".
Вместо этого вы должны использовать psql -U postgres myapp
. Postgres автоматически предложит вам пароль, если он правильно настроен, чтобы потребовать его.