Olvidé la contraseña de Windows de PostgreSQL


31

Esta mañana he estado intentando conectar la base de datos PostgreSQL en mi escritorio Windows 7 Professional.

El valor predeterminado es 'postgres', pero efectivamente olvidé la contraseña que usé cuando la instalé originalmente.

Busqué en Google y encontré una publicación relacionada con el restablecimiento de su contraseña. Seguí los pasos, pero el resultado final es un poco diferente al mencionado en la publicación. Solía-

net user postgres postgres

para restablecer la contraseña de mi base de datos pero en lugar de un mensaje de éxito obtengo:

"Se produjo el error 5 del sistema. Acceso denegado".

error del sistema. ¿Cómo evito este error y restablezco la contraseña?

Respuestas:


33

(Nota: poco de esto es relevante para los lectores que usan PostgreSQL 9.2 o superior de los instaladores de EDB, que ahora tienen una instalación predeterminada muy simplificada usando el NETWORK SERVICE, aunque aún puede configurar otras cuentas) .


Solía net user postgres postgres restablecer la contraseña de mi base de datos, pero en lugar de un mensaje de éxito obtengo"System error 5 has occurred. Access is denied."

Has restablecido (o intentado restablecer) la contraseña de la cuenta de servicio. PostgreSQL no se ejecutará como Administrador por razones de seguridad y el instalador generalmente lo configura con una cuenta de usuario "postgres" en PostgreSQL 9.1 y versiones anteriores 1 . En Windows, no puede iniciar un servicio como usuario sin guardar la contraseña del usuario en el registro, así que eso es lo que hace el instalador.

Si cambia la contraseña de la cuenta de usuario de Windows postgres, el servicio PostgreSQL ya no puede iniciarse. Así que no hagas eso, tendrás que arreglar la configuración del servicio para almacenar la contraseña actualizada.

Afortunadamente, creo que otro error te impidió hacerlo. Parece que probablemente esté ejecutando su símbolo del sistema sin usar "Ejecutar como administrador" en una cuenta de usuario de Windows sin privilegios o en una máquina con UAC, por lo que no se ejecuta con los permisos de acceso necesarios para cambiar la contraseña del postgresusuario.

Antes de intentar cambiar esa contraseña, asegúrese de que sea realmente lo que desea hacer. ¿Cuál es el problema que estás tratando de resolver aquí? ¿Está intentando instalar una actualización de la base de datos o algo más que le pide la contraseña para el postgresusuario de Windows?

Lo más probable es que solo estés intentando iniciar sesión en la base de datos. Para eso, utiliza la contraseña (desafortunadamente completamente no relacionada) almacenada en la base de datos. Como lo has perdido / olvidado, tendrás que restablecerlo:

  • Encuentra tu pg_hba.conf, generalmente enC:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • Si es necesario, configure los permisos para poder modificarlo; es posible que su cuenta de usuario no pueda hacerlo hasta que use la pestaña de seguridad en el cuadro de diálogo de propiedades para otorgarle ese derecho mediante una anulación de administrador. Alternativamente, encuentre notepad / notepad ++ en su menú de inicio, haga clic derecho, elija "Ejecutar como administrador", luego use Archivo-> Abrir para abrir de pg_hba.confesa manera.
  • Edítelo para establecer la línea "host" para el usuario "postgres" en el host "127.0.0.1/32" en "confianza". Puede agregar la línea si no está allí; solo inserte:

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use

    antes de cualquier otra línea. (Puede ignorar los comentarios, las líneas que comienzan con #).

  • Reinicie el servicio PostgreSQL desde el panel de control de Servicios (inicio-> ejecutar-> services.msc)

  • conéctese usando psql o PgAdmin-III o lo que prefiera
  • ALTER USER postgres PASSWORD 'postgres'
  • elimine la línea que agregó pg_hba.confo cámbiela de nuevo
  • reinicie PostgreSQL nuevamente.

Consulte: ¿Cómo restablezco la contraseña de postgres para PostgreSQL en Windows?


1. 9.2 ahora usa la NETWORKSERVICEcuenta, que no requiere contraseña, por lo que este problema desaparece .


8
Es posible que también necesite una entrada de ip6: "aloje todos los postgres :: 1/128 confianza"
Ted Elliott

Todavía me sacó de problemas con postreSQL 9.6 en mi máquina de desarrollo. Seguros de por qué la gente piensa que no ayuda> 9.2
tourdownunder

@darwindave Depende de su instalación. Si instaló para usar la NETWORKSERVICEcuenta de usuario, no hay contraseña de cuenta de servicio. Si instaló para usar una cuenta de servicio dedicada postgreso una cuenta de dominio, entonces puede ayudar.
Craig Ringer el

¿Puede actualizar esta respuesta con 9.2+ que muestre ambos métodos para Windows?
Evan Carroll

1
@EvanCarroll Si está utilizando NETWORK SERVICEno hay contraseña para restablecer. Si instaló en 9.2+ usando una cuenta diferente, se aplica la misma información. Y no hay cambios en la parte de restablecer la contraseña de la cuenta de la base de datos de superusuario de Postgres . Entonces no hay realmente ningún cambio necesario.
Craig Ringer

3

Debe distinguir entre el usuario de su sistema (Windows) llamado "postgres" y el usuario de la base de datos con el mismo nombre.

Encuentre su archivo pg_hba.conf: esto controla el acceso al servidor PostgreSQL. Deberá editarlo como usuario con derechos de administrador. Busque líneas que mencionen al usuario "postgres" y configure temporalmente el modo en "confianza". Reinicie postgresql y luego podrá conectarse sin una contraseña. Restablezca la contraseña, luego restaure el archivo a su configuración original y reinicie PostgreSQL.

El manual tiene detalles sobre los métodos de autenticación y el archivo pg_hba.conf .


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.