Senha esquecida do PostgreSQL para Windows

31

Esta manhã, eu tenho tentado conectar o banco de dados PostgreSQL na minha área de trabalho do Windows 7 Professional.

O valor padrão é 'postgres', mas com certeza esqueci a senha que usei quando a instalei originalmente.

Pesquisei no Google e encontrei uma postagem relacionada à redefinição de sua senha. Eu segui os passos, mas o resultado final é um pouco diferente do mencionado no post. Eu usei-

net user postgres postgres

redefinir a senha do meu banco de dados, mas em vez de uma mensagem de sucesso, estou recebendo:

"Erro no sistema 5. Acesso negado."

erro no sistema. Como evito esse erro e redefino a senha?

AKIWEB
fonte

Respostas:

33

(Nota: pouco disso é relevante para os leitores que usam o PostgreSQL 9.2 ou superior dos instaladores do EDB, que agora têm uma instalação padrão bastante simplificada usando o NETWORK SERVICE, embora você ainda possa configurar outras contas) .


Eu usei net user postgres postgres para redefinir a senha do meu banco de dados, mas em vez de uma mensagem de sucesso, estou recebendo"System error 5 has occurred. Access is denied."

Você redefiniu (ou tentou redefinir) a senha da conta de serviço. O PostgreSQL não será executado como administrador por razões de segurança e o instalador geralmente o configura com uma conta de usuário "postgres" no PostgreSQL 9.1 e versões anteriores 1 . No Windows, você não pode iniciar um serviço como usuário sem salvar a senha do usuário no registro, e é isso que o instalador faz.

Se você alterar a senha da conta de usuário do Windows postgres, o serviço PostgreSQL não poderá mais ser iniciado. Portanto, não faça isso, você precisará corrigir a configuração do serviço para armazenar a senha atualizada.

Felizmente, acho que outro erro impediu você de fazer isso. Parece que você provavelmente está executando seu prompt de comando sem usar "Executar como Administrador" em uma conta de usuário sem privilégios do Windows ou em uma máquina com UAC, portanto, não está executando as permissões de acesso necessárias para alterar a senha do postgresusuário.

Antes de tentar alterar essa senha, verifique se é realmente o que você deseja fazer. Qual é o problema que você está tentando resolver aqui? Você está tentando instalar uma atualização do banco de dados ou alguma outra coisa que esteja solicitando a senha do postgresusuário do Windows?

Provavelmente você está apenas tentando fazer login no banco de dados. Para isso, você usa a senha (infelizmente completamente não relacionada) armazenada no banco de dados. Desde que você perdeu / esqueceu, você terá que redefini-lo:

  • Encontre seu pg_hba.conf, geralmente emC:\Program Files\PostgreSQL\9.1\data\pg_hba.conf
  • Se necessário, defina as permissões para que você possa modificá-lo; sua conta de usuário poderá não conseguir fazer isso até que você use a guia segurança na caixa de diálogo de propriedades para conceder esse direito usando uma substituição de administrador. Como alternativa, encontre o notepad / notepad ++ no menu Iniciar, clique com o botão direito do mouse, escolha "Executar como administrador" e use Arquivo-> Abrir para abrir pg_hba.confdessa maneira.
  • Edite-o para definir a linha "host" do usuário "postgres" no host "127.0.0.1/32" para "confiar". Você pode adicionar a linha se ela não estiver lá; basta inserir:

    host all postgres 127.0.0.1/32 trust
    host all postgres ::1/128      trust # if IPv6 is in use

    antes de qualquer outra linha. (Você pode ignorar comentários, linhas começando com #).

  • Reinicie o serviço PostgreSQL no painel de controle Serviços (iniciar-> executar-> services.msc)

  • conectar usando psql ou PgAdmin-III ou o que você preferir
  • ALTER USER postgres PASSWORD 'postgres'
  • remova a linha que você adicionou pg_hba.confou altere-a novamente
  • restart PostgreSQL again.

Veja: Como redefinir a senha do postgres para o PostgreSQL no Windows?


1. 9.2 agora usa a NETWORKSERVICEconta, que não requer uma senha, então esse problema desaparece .

Craig Ringer
fonte
8
Você também pode precisar de uma entrada ip6 assim: "acolhimento todas postgres :: 1/128 confiança"
Ted Elliott
Ainda me incomodou com o postreSQL 9.6 na minha máquina de desenvolvimento. Inseguro porque as pessoas pensam que não ajuda> 9.2
tourdownunder
@darwindave Depende da sua instalação. Se você instalou para usar a NETWORKSERVICEconta do usuário, não há senha da conta de serviço. Se você instalou para usar uma conta de serviço dedicada como postgresuma conta de domínio, ela pode ajudar.
Craig Ringer
Você pode atualizar esta resposta com a versão 9.2+ também mostrando os dois métodos para Windows?
Evan Carroll
11
@EvanCarroll Se você estiver usando, NETWORK SERVICEnão há senha para redefinir. Se você instalou no 9.2+ usando uma conta diferente, as mesmas informações se aplicam. E não há alterações na parte de redefinir a senha da conta do banco de dados de superusuário do postgres . Portanto, não há realmente nenhuma alteração necessária.
Craig Ringer
3

Você precisa distinguir entre o usuário do sistema (Windows) chamado "postgres" e o usuário do banco de dados com o mesmo nome.

Encontre o seu arquivo pg_hba.conf - controla o acesso ao servidor PostgreSQL. Você precisará editá-lo como um usuário com direitos de administrador. Procure por linhas que mencionem o usuário "postgres" e defina temporariamente o modo para "confiar". Reinicie o postgresql e você poderá se conectar sem uma senha. Redefina a senha, restaure o arquivo para suas configurações originais e reinicie o PostgreSQL.

O manual possui detalhes sobre métodos de autenticação e o arquivo pg_hba.conf .

Richard Huxton
fonte