После установки PostgreSQL 9.1 на Ubuntu 12.04 я установил пароль для учетной записи суперпользователя postgres. Я хочу, чтобы все пользователи вводили свой пароль при входе в систему. Вот почему я настроил pg_hba.conf следующим образом:
#Database administrative login by Unix domain socket
local all postgres md5
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
После внесения этих изменений я перезапустил postgresql. Когда я делаю этот psql -U testuser
меня спрашивают о пароле, но когда я psql -U testuser
систему с учетной записью postgres, например psql -U postgres
я не получаю приглашение к паролю и не вошел в систему. Если я заставляю приглашение пароля с psql -U postgres -W
Я могу войти, набрав правильный пароль или не набрав ничего вообще. Ввод неправильного пароля будет отклонен.
Может ли кто-нибудь объяснить мне, почему это происходит?
Относительно примечания: я вижу много примеров, когда люди используют идентификатор в качестве метода проверки подлинности для пользователя postgres, утверждая, что для того, чтобы стать пользователем postgres, нужен корневой пароль машины. Я предполагаю, что аргументация состоит в том, что если злоумышленник получает root-доступ, все равно будет сделано. Я бы предпочел войти в систему с паролем, хотя, который не совпадает с паролем root. Я предпочитаю иметь разные пароли для разных вещей. Это разумно?
Вывод grep '^[^#]' pg_hba.conf
local all postgres md5
local all all md5
host all all 127.0.0.1/32 md5