Después de instalar PostgreSQL 9.1 en Ubuntu 12.04, establecí la contraseña para la cuenta de superusuario "postgres". Quiero que todos los usuarios tengan que introducir su contraseña cuando loging en Es por esto que he configurado pg_hba.conf este modo:.Sin solicitud de contraseña para superusuario postgresql
#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
Recomencé PostgreSQL después de hacer esos cambios. Cuando hago esto psql -U testuser
me piden una contraseña, pero cuando inicio sesión con la cuenta "postgres" como psql -U postgres
obtengo un mensaje de contraseña y estoy conectado. Si forzo la solicitud de contraseña con psql -U postgres -W
puedo iniciar sesión por escribiendo la contraseña correcta o escribiendo nada en absoluto. Escribir una contraseña incorrecta es rechazada.
¿Alguien puede explicarme por qué sucede esto?
En una nota relacionada: Veo un montón de ejemplos donde las personas usan ident como método de autenticación para el usuario "postgres", argumentando que para convertirse en el usuario "postgres" se necesita la contraseña de root de la máquina. Supongo que el razonamiento es que si un atacante obtiene acceso a la raíz, de todos modos lo haga. Preferiría iniciar sesión con una contraseña, una que no es la misma que la contraseña de root. Prefiero tener contraseñas diferentes para diferentes cosas. Es esto razonable?
salida de grep '^[^#]' pg_hba.conf
local all postgres md5
local all all md5
host all all 127.0.0.1/32 md5
Estaba en el archivo .pgpass, gracias! La parte del archivo pg_hba.conf que citó me confunde un poco. ¿Qué puedo hacer para otorgar acceso no interactivo sin permitir que los postgres inicien sesión sin una contraseña? – Basil
la autenticación de pares debe buscarse para esto, suponiendo que no permita que las personas inicien sesión en el servidor bajo la cuenta de Postgres. – Andrew
Noté el mismo comportamiento en Windows. Después de agregar nuevas conexiones en PgAdminIII, psql ya no me solicitó una contraseña cuando me conecté con postgres. El culpable fue pgpass.conf, creado automáticamente por PgAdminIII en la carpeta% APPDATA% \ postgresql. Gracias Daniel. –