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.
9 answers
-
Encuentra el archivo
pg_hba.conf
- puede estar ubicado, por ejemplo, en/etc/postgresql-9.1/pg_hba.conf
.cd /etc/postgresql-9.1/
-
Copia de seguridad
cp pg_hba.conf pg_hba.conf-backup
-
Coloque la siguiente línea (ya sea como la primera línea no comentada, o como la única):
local all all trust
-
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
-
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 llamapgsql
, 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)
-
Restablecer contraseña
ALTER USER my_user_name with password 'my_secure_password';
-
Restaurar el viejo
pg_hba.conf
ya que es muy peligroso para mantener alrededorcp pg_hba.conf-backup pg_hba.conf
-
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
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=#
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
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.
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
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.
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
-
Edita el archivo
/etc/postgresql/<version>/main/pg_hba.conf
y encuentra la siguiente línea:local all postgres md5
-
Edite la línea y cambie
md5
al final atrust
y guarde el archivo -
Recargar el servicio postgresql
$ sudo service postgresql reload
-
Esto cargará los archivos de configuración. Ahora puede modificar el usuario
postgres
iniciando sesión en el shellpsql
$ psql -U postgres
-
Actualizar la contraseña del usuario
postgres
alter user postgres with password 'secure-passwd-here';
-
Editar el archivo
/etc/postgresql/<version>/main/pg_hba.conf
y cambietrust
de nuevo amd5
y guarde el archivo -
Recargar el servicio postgresql
$ sudo service postgresql reload
-
Compruebe que el cambio de contraseña está funcionando
$ psql -U postgres -W
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.
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.
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