terça-feira, 1 de outubro de 2013

Restaurando o acesso do usuário postgres - Resolvendo problemas do tipo - FATAL: password authentication failed for user "postgres"

Em casos de alteração da senha do usuário postgres via pgAdmin, podem ocorrer algum erros que impossibilitarão o usuário de efetuar o login no banco. Um dos bugs que já vi acontecer trata-se do pgAdmin expirar o acesso do usuário postgres, o qual não conseguirá mais conectar no banco, enquanto não for consertado este problema.

Podemos resolver o problema de acesso da seguinte maneira:

1 - Editar o arquivo pg_hba.conf

# vim /etc/postgresql/9.1/main/pg_hba.conf

Configurar o acesso ao banco como trust, para que não seja pedida a senha do usuário na conexão. Configure o pg_hba.conf como o exemplo abaixo:

# Database administrative login by Unix domain socket
local   all             postgres                      trust
# TYPE  DATABASE        USER            CIDR-ADDRESS  METHOD
# "local" is for Unix domain socket connections only
local   all             all                           trust
# IPv4 local connections:
host    all             all        127.0.0.1/32       trust
# IPv6 local connections:
host    all             all             ::1/128       trust

2 - Reinicie o serviço do postgresql

# /etc/init.d/postgresql restart

3 - Logue como o usuário postgres no sistema e logo em seguida execute o psql
# su postgres
# psql

4 - Execute o comando abaixo no console do psql para alterar a data de expiração de acesso do usuário.

# ALTER USER postgres VALID UNTIL 'infinity';

Caso deseje alterar a senha do usuário, basta rodar o comando abaixo:

#ALTER USER postgres WITH PASSWORD 'senha';

5 - Configure o arquivo pg_hba.conf para solicitar a senha nas conexões, basta mudar a opção do método de acesso para md5

# Database administrative login by Unix domain socket
local   all             postgres                      md5
# TYPE  DATABASE        USER            CIDR-ADDRESS  METHOD
# "local" is for Unix domain socket connections only
local   all             all                           md5
# IPv4 local connections:
host    all             all        127.0.0.1/32       md5
# IPv6 local connections:
host    all             all             ::1/128       md5

6 - Reinicie o serviço do postgresql

# /etc/init.d/postgresql restart