eliminar el requisito de contraseña para el usuario postgres

46

Entiendo que, después de la instalación, PostgreSQL no tiene contraseña para su usuario raíz de db (postgres):

postgres=# select usename, passwd is null from pg_shadow;
 usename  | ?column? 
----------+----------
 postgres | t
(1 row)

... y se recomienda configurarlo con:

alter role postgres password '<<very-secret>>';

(y luego actualice el pg_hba.confarchivo en consecuencia)

Mi pregunta es: ¿cuál es el SQL que se debe utilizar para volver a la situación anterior cuando no se necesitaba una contraseña para el usuario postgres?

En general, ¿cómo puedo eliminar el requisito de contraseña para cualquier rol? No estoy preguntando cómo cambiar la contraseña, sino cómo eliminar el requisito de contraseña ( passwdcolumna nula en la tabla pg_shadow).

Marcus Junius Brutus
fuente

Respuestas:

55

Si se requiere o no una contraseña no tiene nada que ver pg_shadowy si una contraseña está realmente definida para el usuario. Sí, lo sé, eso es raro.

pg_hba.confcontrola el método de autenticación. Si desea solicitar una contraseña, use md5autenticación. Si desea permitir el inicio de sesión sin contraseña para nadie, use trust. Si desea requerir el mismo nombre de usuario en el sistema operativo que en PostgreSQL, use peer(UNIX, solo para conexiones locales) o sspi(Windows).

Si hay una contraseña establecida, pero pg_hba.confno le dice a PostgreSQL que la solicite, la contraseña se ignora.

Si pg_hba.confle dice a PostgreSQL que solicite una contraseña pero no hay ninguna establecida, todos los intentos de inicio de sesión fallarán sin importar qué contraseña se proporcione.

Craig Ringer
fuente
12

El usuario postgres por defecto no tiene contraseña. Para eliminar una contraseña de usuario (en este caso para el usuario / rol de postgres):

alter role postgres password null;

También necesitamos configurar la autenticación trusten pg_hba.conf- ver detalles [ https://dba.stackexchange.com/a/19657/52550]

lalligood
fuente
3
ahora no puedo acceder en psql
Roberth Solís
3
Sí, ahora me piden una contraseña y no puedo iniciar sesión ...
Amalgovinus
1
este comando me prohíbe postgres, igual que @Amalgovinus dijo.
Nam G VU
1
Si no puede acceder debido al error psql: fe_sendauth: no password supplied, edite su C:\Program Files\PostgreSQL\10\data\pg_hba.confy reemplace md5con trustnext to 127.0.0.1/32under IPv4 local connectionsy next to ::1/128underIPv6 local connections
Marco Lackovic
1

Esto funcionó para mí:

alter role postgres password '';

thouliha
fuente
44
Cuando hago esto en postgres 10, aparece el error "AVISO: la cadena vacía no es una contraseña válida, borrando la contraseña". ¡Pero de todos modos cambia mi contraseña y no puedo iniciar sesión con nada! WTF !!
Amalgovinus
@Amalgovinus mira mi comentario a la respuesta lalligood
Marco Lackovic