Olvidé la contraseña que introduje durante la instalación de postgres


Olvidé o escribí mal (durante la instalación) la contraseña del usuario predeterminado de Postgres. Parece que no puedo ejecutarlo y obtengo el siguiente error:

psql: FATAL:  password authentication failed for user "hisham"
hisham-agil: hisham$ psql 

¿Hay algún modo de restablecer la contraseña o cómo puedo crear un nuevo usuario con privilegios de superusuario?

Soy nuevo en Postgres y acabo de instalarlo por primera vez. Estoy tratando de usarlo con Rails y estoy ejecutando Mac OS X Lion.

Author: Ben, 2012-06-01

9 answers

  1. Encuentra el archivo pg_hba.conf - puede estar ubicado, por ejemplo, en /etc/postgresql-9.1/pg_hba.conf.

    cd /etc/postgresql-9.1/

  2. Copia de seguridad

    cp pg_hba.conf pg_hba.conf-backup

  3. Coloque la siguiente línea (ya sea como la primera línea no comentada, o como la única):

    local all all trust

  4. Reinicie su servidor PostgreSQL (por ejemplo, en Linux:)

    sudo /etc/init.d/postgresql restart

    Si el servicio (demonio) no comienza a informar en el archivo de registro:

    Conexiones Locales no son compatibles con esta compilación

    Usted debe cambiar

    local all all trust

    A

    host all all 127.0.0.1/32 trust

  5. Ahora puede conectarse como cualquier usuario. Conectar como superusuario postgres (nota, el nombre del superusuario puede ser diferente en su instalación. En algunos sistemas se llama pgsql, por ejemplo.)

    psql -U postgres

    O

    psql -h 127.0.0.1 -U postgres

    (tenga en cuenta que con el primer comando no siempre estará conectado con host)

  6. Restablecer contraseña

    ALTER USER my_user_name with password 'my_secure_password';

  7. Restaurar el viejo pg_hba.conf ya que es muy peligroso para mantener alrededor

    cp pg_hba.conf-backup pg_hba.conf

  8. Reinicie el servidor, con el fin de ejecutar con la caja fuerte pg_hba.conf

    sudo /etc/init.d/postgresql restart

Más información sobre ese archivo pg_hba: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html

 261
Author: Arsen7,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-02 10:21:47

Al conectarse a postgres desde la línea de comandos, no olvide agregar -h localhost como parámetro de la línea de comandos. Si no, postgres intentará conectarse usando el modo de autenticación de PARES.

A continuación se muestra un restablecimiento de la contraseña, un inicio de sesión fallido con autenticación de PARES y un inicio de sesión exitoso utilizando una conexión TCP.

# sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

Fallando:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

Trabajando con -h localhost:

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#
 66
Author: SaeX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-23 17:35:54

El pg_hba.conf (C:\Program Files\PostgreSQL\9.3\data) el archivo ha cambiado desde que se dieron estas respuestas. Lo que funcionó para mí, en Windows, es abrir el archivo y cambiar el METHOD de md5 a trust:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

Luego, usando pgAdmin III, inicié sesión sin contraseña y cambié la contraseña de usuario postgres' yendo a File -> Change Password

 49
Author: SaiyanGirl,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-19 22:26:11

Solo una nota, en Linux simplemente puede ejecutar sudo su - postgres para convertirse en el usuario de postgres y desde allí cambiar lo requerido usando psql.

 5
Author: Daniel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-12 16:43:12

Si estás en Windows puedes ejecutar

net user postgres postgres

E iniciar sesión en postgres con postgres / postgres como usuario / contraseña

 1
Author: ivofernandes,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-07 16:36:11

Para la instalación de Windows, se crea un usuario de Windows. Y "psql" utilizar este usuario para la conexión al puerto. Si cambia la contraseña del usuario de PostgreSQL, no cambiará la de Windows. La línea de comandos juste a continuación solo funciona si tiene acceso a la línea de comandos.

En su lugar, podría usar la aplicación GUI de Windows "c:\Windows\system32\lusrmgr.exe". Esta aplicación administra los usuarios creados por Windows. Así que ahora puede modificar la contraseña.

 1
Author: cpunky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-21 15:31:14
  1. Edita el archivo /etc/postgresql/<version>/main/pg_hba.conf y encuentra la siguiente línea:

    local   all             postgres                                md5
    
  2. Edite la línea y cambie md5 al final a trust y guarde el archivo

  3. Recargar el servicio postgresql

    $ sudo service postgresql reload
    
  4. Esto cargará los archivos de configuración. Ahora puede modificar el usuario postgres iniciando sesión en el shell psql

    $ psql -U postgres
    
  5. Actualizar la contraseña del usuario postgres

    alter user postgres with password 'secure-passwd-here';
    
  6. Editar el archivo /etc/postgresql/<version>/main/pg_hba.conf y cambie trust de nuevo a md5 y guarde el archivo

  7. Recargar el servicio postgresql

    $ sudo service postgresql reload
    
  8. Compruebe que el cambio de contraseña está funcionando

    $ psql -U postgres -W
    
 1
Author: Ray Hunter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-17 02:55:49

Lo que hice para resolver el mismo problema fue:

Abra pg_hba.archivo conf con el editor gedit desde el terminal:

sudo gedit /etc/postgresql/9.5/main/pg_hba.conf

Se le pedirá la contraseña. Ingrese su contraseña de inicio de sesión de administrador. Esto abrirá gedit con el archivo. Pegue la siguiente línea:

host  all   all  127.0.0.1/32  trust

Justo debajo -

# Database administrative login by Unix domain socket

Guárdelo y ciérrelo. Cierra el terminal y ábrelo de nuevo y ejecuta este comando:

psql -U postgres

Ahora ingresará a la consola psql. Ahora cambie la contraseña ingresando esto:

ALTER USER [your prefered user name] with password '[desired password]';

Si dice que el usuario no existe, entonces en lugar de ALTER use CREATE.

Por último, elimine esa línea determinada que pegó en pg_hba y guárdela.

 1
Author: Inconnu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-14 12:08:38

El archivo .pgpass en el directorio personal de un usuario o el archivo referenciado por PGPASSFILE puede contener contraseñas que se utilizarán si la conexión requiere una contraseña (y no se ha especificado ninguna contraseña de otro modo). En Microsoft Windows el archivo se llama %APPDATA% \ postgresql \ pgpass.conf (donde %APPDATA% se refiere al subdirectorio Datos de la aplicación en el perfil del usuario).

Este archivo debe contener líneas del siguiente formato:

Nombre de host: puerto:base de datos:nombre de usuario: contraseña

(Usted puede agregar un comentario recordatorio al archivo copiando la línea anterior y precediéndolo con #.) Cada uno de los cuatro primeros campos puede ser un valor literal, o *, que coincide con cualquier cosa. Se utilizará el campo contraseña de la primera línea que coincida con los parámetros de conexión actuales. (Por lo tanto, ponga primero entradas más específicas cuando utilice comodines.) Si una entrada necesita contener : o \, escape este carácter con . Un nombre de host de localhost coincide con TCP (nombre de host localhost) y el dominio Unix conexiones de socket (pghost empty o el directorio de sockets predeterminado) provenientes de la máquina local. En un servidor en espera, un nombre de base de datos de replicación coincide con las conexiones de replicación de streaming realizadas al servidor maestro. El campo base de datos tiene una utilidad limitada porque los usuarios tienen la misma contraseña para todas las bases de datos en el mismo clúster.

En sistemas Unix, los permisos están activados .pgpass debe impedir cualquier acceso a mundo o grupo; para ello, utilice el comando chmod 0600~/.pgpass. Si el los permisos son menos estrictos que esto, el archivo será ignorado. En Microsoft Windows, se asume que el archivo se almacena en un directorio que es seguro, por lo que no se realiza ninguna comprobación de permisos especiales.

 0
Author: rahulnikhare,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-20 08:58:27