¿Cuál es el nombre de usuario / contraseña de superusuario predeterminado para postgres después de una nueva instalación?


Respuestas:


534

PRECAUCIÓN La respuesta sobre cambiar la contraseña de UNIX para "postgres" a través de "$ sudo passwd postgres" no es preferida, ¡e incluso puede ser PELIGROSA !

Esta es la razón: por defecto, la cuenta UNIX "postgres" está bloqueada, lo que significa que no se puede iniciar sesión con una contraseña. Si usa "sudo passwd postgres", la cuenta se desbloquea inmediatamente. Peor aún, si configura la contraseña en algo débil, como "postgres", está expuesto a un gran peligro para la seguridad. Por ejemplo, hay una serie de bots que intentan el combo de nombre de usuario / contraseña "postgres / postgres" para iniciar sesión en su sistema UNIX.

Lo que debes hacer es seguir la respuesta de Chris James :

sudo -u postgres psql postgres

# \password postgres

Enter new password: 

Para explicarlo un poco. Por lo general, hay dos formas predeterminadas de iniciar sesión en el servidor PostgreSQL:

  1. Mediante la ejecución de la orden "psql" como un usuario UNIX (el llamado IDENT / autenticación del mismo nivel), por ejemplo: sudo -u postgres psql. Tenga en cuenta que sudo -uNO desbloquea al usuario UNIX.

  2. mediante conexión TCP / IP utilizando el nombre de usuario / contraseña administrados de PostgreSQL (la llamada autenticación TCP) (es decir, NO la contraseña UNIX).

Por lo tanto, nunca desea establecer la contraseña para la cuenta de UNIX "postgres". Déjelo bloqueado como está por defecto.

Por supuesto, las cosas pueden cambiar si lo configura de manera diferente a la configuración predeterminada. Por ejemplo, uno podría sincronizar la contraseña de PostgreSQL con la contraseña de UNIX y solo permitir inicios de sesión locales. Eso estaría más allá del alcance de esta pregunta.


11
Entonces, ¿cómo se bloquean los postgres de usuario?
ultrajohn

3
@ultrajohn - depende de la distribución que use, pero puede editar / etc / passwd y poner * en lugar de la contraseña
lzap

3
/etc/shadowes donde se guarda la contraseña @lzap.
Gringo Suave

2
Correcto, puede establecer / sbin / nologin en / etc / passwd o poner * en lugar de la contraseña en / etc / shadow.
lzap

34
passwd --lock postgres
Stéphane

166

Ingrese en la línea de comando:

$ sudo -u postgres psql postgres
postgres=# \password postgres

Verás:

Enter new password: 
Enter it again:

77
Esto es lo que se necesita para usar una herramienta como pgadminIII (al configurar un perfil de servidor) inmediatamente después de instalar Postgres. ¡Gracias!
limist

64

Manipula los postgres a través del usuario postgres, así:

# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;

55
@ThierryLam Debe ser root para suel usuario de postgres sin ingresar una contraseña. En la mayoría de los sistemas, la cuenta de Unix de Postgres está bloqueada (no funcionará ninguna contraseña), lo que significa que solo puede rootear suesa cuenta.
voretaq7

2
Usar en sudolugar de su.
reinierpost

8
Tuve que correr sudo su - postgres: \
Jim Schubert

3
@ Jim Schubert: también puedes correr sudo -u postgres.
reinierpost

1
sudo -u postgres psql - funciona también para que puedas hacerlo en un solo paso.
Ominus

21

En Windows, haga lo siguiente (IMPORTANTE: use una cuenta de administrador de Windows ):

  1. Después de la instalación, abrir <PostgreSQL PATH>\data\pg_hba.conf.

  2. Modifique estas dos líneas y cambie "md5" a "confianza":

    host all all 127.0.0.1/32 md5

    host all all ::1/128 md5

  3. Reinicie el servicio PostgreSQL (podría no ser necesario).

  4. (Opcional) Abra un símbolo del sistema y cambie la página de códigos a 1252:

    cmd.exe /c chcp 1252

  5. Inicie sesión en PostgreSQL. No se necesitará contraseña (observe el parámetro -U mayúscula):

    psql -U postgres

  6. (Opcional, recomendado por razones de seguridad) Cambie la postgrescontraseña del usuario:

    \password postgres

    y cambie "confianza" a "md5" en pg_hba.conf.


5

Si está intentando acceder al shell de PostgreSQL, puede escribir:

psql -U postgres my_database

¿Dónde my_databaseestá el nombre de tu base de datos?

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.