PgAdmin III - ¿Cómo conectarse a la base de datos cuando la contraseña está vacía?

21

He instalado PostgreSQL 9.1 en mi PC (Win 7). Tengo una pequeña aplicación Java que se conecta con éxito con login=say password="". La conexión funciona.

Sin embargo, se rechaza del propio PgAdmin III. Yo obtengo:

Error connecting to the server: fe_sendauth: no password supplied

¿Cómo me conecto a mi base de datos desde PgAdmin III con una contraseña vacía?

EDITAR

Esto es solo una prueba, no un código de producción.

Jérôme Verstrynge
fuente
No estoy seguro, pero es fácil imaginar que PgAdmin no es compatible con eso.
Peter Eisentraut
¿Está su aplicación Java en el mismo cliente que pgAdmin?
Jack Douglas
pregunta similar
Jack Douglas el

Respuestas:

10

Puedo conectarme a mi instancia de Postgres desde pgAdmin III sin una contraseña para ningún usuario, incluidos los superusuarios como postgres .

Debido a que está conectando bien desde otro cliente, no hay ninguna razón por la que no pueda conectarse desde pgAdmin si están en la misma estación de trabajo, a menos que alguna regla de firewall en el cliente permita un programa pero no otro.

Si el problema es específico de este cliente, es posible que deba cambiar uno o más de:

  • pg_hba.conf
host en todos 192.168.0.nnn / 32 confianza
  • postgresql.conf
listen_addresses = '*'
  • el firewall en su servidor postgres, por ejemplo, iptables:
-A ENTRADA -s 192.168.0.nnn -m estado - estado NUEVO -j ACEPTAR

Pero te recomiendo que no hagas nada de esto. El manual dice lo siguiente con buena razón:

la autenticación de confianza solo es adecuada para conexiones TCP / IP si confía en cada usuario en cada máquina que tiene permitido conectarse al servidor mediante las líneas pg_hba.conf que especifican confianza. Rara vez es razonable usar la confianza para cualquier conexión TCP / IP que no sea de localhost (127.0.0.1).

En cambio, considere:

  • utilizando una contraseña e identificación md5
  • puerto de túnel 5432 sobre ssh
Jack Douglas
fuente
31

Encontré esta respuesta en otra parte.

Si su base de datos está en el host local, intente dejar el campo del host en blanco en la conexión en lugar de usar "localhost" o "127.0.0.1". Esto le dice a PgAdmin que se conecte a través del socket local de Unix en lugar de TCP.

Alex Jodidio
fuente
Agreguemos que la pregunta original era sobre un sistema Windows.
dezso
3
Ah esto era exactamente eso. Dejar el host en blanco funcionó.
basicdays
No puede dejar este campo en blanco, es obligatorio.
Athlan
Parece que dejar el campo host en blanco funciona solo si tiene un rol en pg llamado como su nombre de usuario del sistema (en Linux). De lo contrario, supongo que se necesitan mapas de usuario.
a1an
¡Perfecto! Con una nueva instalación de postgresql y pgadmin, cambiando pg_hba.confpara decir en trustlugar de peeren esta línea local all postgres trust, y dejando en blanco los campos de host y contraseña en pgadmin, ¡todo funciona! Deseo que pgadmin agregue una casilla de verificación para cambiar a sockets en lugar de esta interfaz de usuario difícil de descubrir.
Anupam Jain