Alexander A. E. Full Stack Developer

Resetear password de PostgreSQL

Recurrentemente he necesitado cambiar la contraseña del usuario 'postgres' del postgresql, por lo cual incluyo aquí una nota1 para mi mismo y para a quien esto le pueda ayudar:

Pasos:

  1. Abrimos una terminal y accedemos como usuario postgres:

    sudo su postgres
    
  2. Ejecutamos psql para acceder a la terminal interactiva de postgresql:

    psql
    
  3. Ahora escribimos esta sentencia SQL que nos permitirá asignar una nueva contraseña al usuario postgres:

    alter user postgres with password 'nueva_contraseña';

  4. Salimos de psql con:

    \q
    
  5. Cerramos nuestra sesión como postgres:

    exit
    

y listo, contraseña cambiada.

Forma recomendada hoy

En PostgreSQL 18 y en la mayoría de instalaciones Linux, no hace falta cambiar de usuario con su. Basta con ejecutar psql como el usuario del sistema postgres:

    sudo -u postgres psql

Dentro de psql, el comando \password pide la nueva contraseña dos veces y la guarda sin dejarla en el historial de la shell:

    \password postgres

También puedes usar SQL directamente:

    ALTER USER postgres WITH PASSWORD 'nueva_contraseña';

Después de cambiarla, comprueba que puedes iniciar sesión con el nuevo método de autenticación.

Si no puedes entrar como postgres

Si sudo -u postgres psql falla porque el usuario del sistema no existe o no tienes sudo, necesitarás acceso de administrador al servidor. En el peor caso se arranca PostgreSQL en modo monousuario (postgres --single) para cambiar la contraseña, pero es una operación delicada: haz una copia de seguridad antes y revisa la documentación de tu versión.

Autenticación: pg_hba.conf

Cambiar la contraseña no cambia el método de autenticación. En PostgreSQL moderno lo habitual es scram-sha-256. Revisa /etc/postgresql/<version>/main/pg_hba.conf y, después de editarlo, recarga la configuración:

    sudo systemctl reload postgresql

No dejes trust en una base expuesta a la red.

Preguntas frecuentes

¿Dónde se guarda la contraseña?

PostgreSQL guarda un hash en pg_authid; no se puede recuperar la contraseña original, solo cambiarla.

¿Por qué me pide contraseña si uso sudo?

Porque psql está usando autenticación por contraseña para esa conexión. Ejecuta sudo -u postgres psql para usar la autenticación del sistema o ajusta pg_hba.conf.

¿Puedo cambiar la contraseña de otro usuario?

Sí, con ALTER USER nombre WITH PASSWORD '...'; desde un usuario con permisos de administración.


  1. Visto en el blog de Johan Hernandez ↩

Comentarios !

comments powered by Disqus