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:
-
Abrimos una terminal y accedemos como usuario postgres:
sudo su postgres -
Ejecutamos psql para acceder a la terminal interactiva de postgresql:
psql -
Ahora escribimos esta sentencia SQL que nos permitirá asignar una nueva contraseña al usuario postgres:
alter user postgres with password 'nueva_contraseña';
-
Salimos de psql con:
\q -
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.
-
Visto en el blog de Johan Hernandez ↩
Comentarios !
comments powered by Disqus