Hummm ...
Se você puder se conectar com o nome de usuário e a senha no pgAdminIII, mas não puder se conectar psql
, esses dois programas provavelmente estão se conectando ao banco de dados de maneira diferente.
[Se você estiver se conectando a bancos de dados diferentes, primeiro tente conectar-se ao mesmo banco de dados. Ver abaixo.]
Do PostgreSQL: Documentação: 9.3: psql :
Se você omitir o nome do host, o psql se conectará por meio de um soquete de domínio Unix a um servidor no host local ou via TCP / IP ao host local em máquinas que não possuam soquetes de domínio Unix.
Se você não está executando algo como psql ... -h host_name ...
o Ubuntu e psql
deve estar conectado através de um soquete de domínio Unix, o PostgreSQL provavelmente não está configurado para permitir um dos métodos de autenticação de senha para o usuário do postgres .
Você pode testar isso executando:
sudo -u postgres psql
Se as obras acima, o servidor provavelmente está configurado para uso de pares de autenticação para ligações locais pelo postgres usuário, isto é, pedindo o sistema operacional para o seu nome de usuário para confirmar que você está postgres .
Portanto, é provavelmente o seu arquivo pg_hba.conf
O caminho completo do arquivo será algo como /etc/postgresql/9.3/main/pg_hba.conf . Você pode visualizá-lo, por exemplo sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
.
Se você estiver omitindo o nome do host em seu psql
comando, poderá conectar-se se adicionar a seguinte entrada ao seu arquivo pg_hba.conf :
# Connection type Database User IP addresses Method
local all postgres md5
[As linhas comentadas no arquivo pg_hba.conf começam com #
.]
Se você estiver incluindo o nome do host em seu psql
comando, adicione esta entrada:
# Connection type Database User IP addresses Method
host all postgres 127.0.0.1/32 md5
Você precisa inserir a entrada antes que outras entradas correspondam à sua conexão via psql
. Em caso de dúvida sobre onde colocá-lo, basta colocá-lo antes da primeira linha não comentada.
Mais sobre o pg_hba.conf
Do PostgreSQL: Documentação: 9.3: O arquivo pg_hba.conf [bold ênfase meu]:
O primeiro registro com um tipo de conexão , endereço do cliente , banco de dados solicitado e nome de usuário correspondentes é usado para executar a autenticação. Não há "fall-through" ou "backup": se um registro for escolhido e a autenticação falhar, os registros subsequentes não serão considerados. Se nenhum registro corresponder, o acesso será negado.
Observe que os registros não são correspondidos no método de autenticação. Portanto, se o seu arquivo pg_hba.conf contiver a seguinte entrada:
# Connection type Database User IP addresses Method
local all postgres peer
Então você não poderá se conectar via:
psql -u postgres
A menos que uma dessas entradas esteja no seu arquivo pg_hba.conf acima da 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!