Hmmm ...
Si puede conectarse con el nombre de usuario y la contraseña en pgAdminIII pero no puede conectarse con psql
entonces esos dos programas probablemente se estén conectando a la base de datos de manera diferente.
[Si se está conectando a diferentes bases de datos, primero intente conectarse a la misma base de datos. Vea abajo.]
Desde PostgreSQL: Documentación: 9.3: psql :
Si omite el nombre de host, psql se conectará a través de un socket de dominio Unix a un servidor en el host local, o mediante TCP / IP a localhost en máquinas que no tienen sockets de dominio Unix.
Si no está ejecutando algo así psql ... -h host_name ...
, y está ejecutando Ubuntu, psql
debería conectarse a través de un socket de dominio Unix, por lo que PostgreSQL probablemente no esté configurado para permitir uno de los métodos de autenticación de contraseña para el usuario de postgres .
Puede probar esto ejecutando:
sudo -u postgres psql
Si lo anterior funciona, es probable que su servidor esté configurado para usar autenticación de pares para conexiones locales por parte del usuario postgres , es decir, pedirle al sistema operativo su nombre de usuario para confirmar que usted es postgres .
Entonces, probablemente sea su archivo pg_hba.conf
La ruta completa del archivo será algo así como /etc/postgresql/9.3/main/pg_hba.conf . Puede verlo por ej sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
.
Si está omitiendo el nombre de host en su psql
comando, debería poder conectarse si agrega la siguiente entrada a su archivo pg_hba.conf :
# Connection type Database User IP addresses Method
local all postgres md5
[Las líneas comentadas en el archivo pg_hba.conf comienzan con#
.]
Si está incluido el nombre de host en su psql
comando, agregue esta entrada en su lugar:
# Connection type Database User IP addresses Method
host all postgres 127.0.0.1/32 md5
Debe colocar la entrada antes de que cualquier otra entrada coincida con su conexión a través de psql
. Si tiene dudas sobre dónde colocarlo, simplemente colóquelo antes de la primera línea sin comentarios.
Más acerca de pg_hba.conf
Desde PostgreSQL: Documentación: 9.3: El archivo pg_hba.conf [negrita énfasis]:
El primer registro con un tipo de conexión , dirección de cliente , base de datos solicitada y nombre de usuario coincidentes se utiliza para realizar la autenticación. No hay "caída" o "copia de seguridad": si se elige un registro y la autenticación falla, no se consideran los registros posteriores. Si ningún registro coincide, se deniega el acceso.
Tenga en cuenta que los registros no coinciden con el método de autenticación. Entonces, si su archivo pg_hba.conf contiene la siguiente entrada:
# Connection type Database User IP addresses Method
local all postgres peer
Entonces no podrás conectarte a través de:
psql -u postgres
A menos que una de estas entradas esté en su archivo pg_hba.conf sobre la entrada anterior:
# Connection type Database User IP addresses Method
local all postgres md5
local all postgres password # Unencrypted!
local all all md5
local all all password # Unencrypted!