Falha na Autenticação PostGreSQL com a opção “confiança”

2

Estou tentando configurar um banco de dados PostGIS usando o PostGreSQL 9.1 no Ubuntu 12.04. Configurei o banco de dados, criei uma conta de usuário "jay" sem senha, adicionei funcionalidade espacial seguindo a seção 2.5 aqui , e configure meu pg_hba.conf para local para:

# "local" is for Unix domain socket connections only
local   all             all                                     trust

Eu posso conectar-me ao banco de dados usando o PGAdminIII, não exigindo nenhuma senha para conexão, mas a conexão falha quando tento conectar via PostGIS ou com o QuantumGIS. Aqui está um screencap da janela de conexão no QuantumGIS:

Olhandoparaoproblema,deparei-mecom este post que me levou a tentar se conectar através do terminal usando psql -U jay -h localhost gis . psql solicitou uma senha, eu pressionei enter porque não tinha definido uma senha e ela retornou psql: fe_sendauth: no password supplied . Eu tentei novamente, desta vez fornecendo minha senha de usuário do Ubuntu, que retornou

psql: FATAL:  password authentication failed for user "jay"
FATAL:  password authentication failed for user "jay"

Eu então tentei definir uma senha para jay usando ALTER USER e inserindo essa senha no prompt, e isso também falhou. Obviamente, não consigo me conectar. No entanto, estou com dificuldades para descobrir quais as etapas de solução de problemas a seguir.

Alguma ideia?

    
por Jay Guarneri 13.03.2013 / 22:10

1 resposta

5

O PostgreSQL suporta dois transportes diferentes para conexões: soquetes de rede TCP / IP e soquetes de domínio unix. Estes são configurados com entradas diferentes em pg_hba.conf .

As conexões do soquete do domínio unix são as entradas local e os soquetes TCP / IP são as entradas host , hostssl e hostnossl , conforme o pg_hba.conf documentation .

Nesse caso, é muito provável que você tenha definido local conexões como trust , mas deixado as entradas host do TCP / IP como md5 . Se as ferramentas do PostGIS estiverem usando TCP / IP para localhost em vez de soquetes unix, elas deverão fornecer uma senha. Algumas bibliotecas cliente (como o PgJDBC) não suportam sockets unix e alguns programas serão padronizados para TCP / IP, mesmo que sua biblioteca cliente suporte sockets unix, então isto não é algo que você possa controlar.

Verifique se você tem uma entrada host para 127.0.0.1/32 com trust auth e faça um pg_ctl reload ou recarregue / reinicie a página.

BTW, por favor, não use trust quando você entrar em produção. Está tudo bem para o acesso local testar bancos de dados sem dados importantes, mas é sobre isso.

    
por 15.03.2013 / 00:17