Esqueci a senha que inseri durante a instalação do postgres

Eu esqueci ou digitei incorretamente (durante a instalação) a senha para o usuário padrão do Postgres. Parece que não consigo executá-lo e recebo o seguinte erro:

psql: FATAL: password authentication failed for user "hisham" hisham-agil: hisham$ psql 

Existe alguma maneira de redefinir a senha ou como criar um novo usuário com privilégios de superusuário?

Eu sou novo no Postgres e acabei de instalá-lo pela primeira vez. Eu estou tentando usá-lo com Rails e estou executando o Mac OS X Lion.

    1. encontre o arquivo pg_hba.conf – ele pode estar localizado, por exemplo, em /etc/postgresql-9.1/pg_hba.conf .

      cd /etc/postgresql-9.1/

    2. Apoia-la

      cp pg_hba.conf pg_hba.conf-backup

    3. coloque a seguinte linha (como a primeira linha não comentada ou como a única):

      local all all trust

    4. reinicie seu servidor PostgreSQL (por exemplo, no Linux 🙂

      sudo /etc/init.d/postgresql restart

      Se o serviço (daemon) não iniciar o relatório no arquivo de log:

      conexões locais não são suportadas por esta compilation

      você deveria mudar

      local all all trust

      para

      host all all 127.0.0.1/32 trust

    5. Agora você pode se conectar como qualquer usuário. Conecte-se como o superusuário postgres (note que o nome do superusuário pode ser diferente em sua instalação. Em alguns sistemas ele é chamado pgsql , por exemplo ) .

      psql -U postgres

      ou

      psql -h 127.0.0.1 -U postgres

      (note que com o primeiro comando você não estará sempre conectado com o host local)

    6. Redefinir senha

      ALTER USER my_user_name with password 'my_secure_password';

    7. Restaure o antigo pg_hba.conf , pois é muito perigoso mantê-lo

      cp pg_hba.conf-backup pg_hba.conf

    8. reinicie o servidor, para rodar com o seguro pg_hba.conf

      sudo /etc/init.d/postgresql restart

    Leitura adicional sobre o arquivo pg_hba: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html

    Ao conectar-se ao postgres a partir da linha de comando, não se esqueça de adicionar -h localhost como parâmetro da linha de comando. Caso contrário, o postgres tentará se conectar usando o modo de autenticação PEER.

    A seguir, mostramos uma redefinição da senha, um login com falha com autenticação PEER e um login bem-sucedido usando uma conexão TCP.

     # sudo -u postgres psql could not change directory to "/root" psql (9.1.11) Type "help" for help. postgres=# \password Enter new password: Enter it again: postgres=# \q 

    Falha:

     # psql -U postgres -W Password for user postgres: psql: FATAL: Peer authentication failed for user "postgres" 

    Trabalhando com -h localhost :

     # psql -U postgres -W -h localhost Password for user postgres: psql (9.1.11) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. postgres=# 

    O pg_hba.conf ( C:\Program Files\PostgreSQL\9.3\data ) foi alterado desde que essas respostas foram dadas. O que funcionou para mim, no Windows, é abrir o arquivo e mudar o METHOD do md5 para o trust :

     # TYPE DATABASE USER ADDRESS METHOD # IPv4 local connections: host all all 127.0.0.1/32 trust # IPv6 local connections: host all all ::1/128 trust 

    Então, usando o pgAdmin III, eu entrei usando nenhuma senha e mudei a senha do usuário postgres' indo em File -> Change Password

    Apenas uma nota, no Linux Você pode simplesmente executar sudo su - postgres para se tornar o usuário postgres e de lá mudar o que é necessário usando o psql.

    Se você está no Windows, você pode simplesmente executar

     net user postgres postgres 

    e faça o login no postgres com postgres / postgres como usuário / senha

    Para instalação do Windows, um usuário do Windows é criado. E “psql” usa este usuário para conexão com a porta. Se você alterar a senha do usuário do PostgreSQL, ela não alterará a senha do Windows. A linha de comando abaixo funciona apenas se você tiver access à linha de comando.

    Em vez disso, você pode usar o aplicativo de GUI do Windows “c: \ Windows \ system32 \ lusrmgr.exe”. Este aplicativo gerencia usuários criados pelo Windows. Então você pode agora modificar a senha.

    1. Edite o arquivo /etc/postgresql//main/pg_hba.conf e encontre a seguinte linha:

       local all postgres md5 
    2. Edite a linha e altere o md5 no final para trust e salvar o arquivo

    3. Recarregue o serviço postgresql

       $ sudo service postgresql reload 
    4. Isso carregará os arquivos de configuração. Agora você pode modificar o usuário postgres fazendo login no shell do psql

       $ psql -U postgres 
    5. Atualize a senha do usuário postgres

       alter user postgres with password 'secure-passwd-here'; 
    6. Edite o arquivo /etc/postgresql//main/pg_hba.conf e mude a trust volta para o md5 e salve o arquivo

    7. Recarregue o serviço postgresql

       $ sudo service postgresql reload 
    8. Verifique se a alteração da senha está funcionando

       $ psql -U postgres -W 

    O que eu fiz para resolver o mesmo problema foi:

    Abra o arquivo pg_hba.conf com o editor de gedit do terminal:

     sudo gedit /etc/postgresql/9.5/main/pg_hba.conf 

    Ele pedirá senha. Digite sua senha de login de administrador. Isto irá abrir o gedit com o arquivo. Cole a seguinte linha:

     host all all 127.0.0.1/32 trust 

    logo abaixo –

     # Database administrative login by Unix domain socket 

    Salve e feche. Feche o terminal e abra-o novamente e execute este comando:

     psql -U postgres 

    Você agora entrará no console do psql. Agora mude a senha digitando isto:

     ALTER USER [your prefered user name] with password '[desired password]'; 

    Se ele disser que o usuário não existe, em vez de ALTER use CREATE .

    Por último, remova aquela linha que você colou em pg_hba e salve-a.

    O arquivo .pgpass no diretório inicial de um usuário ou o arquivo referenciado por PGPASSFILE pode conter senhas a serem utilizadas se a conexão exigir uma senha (e nenhuma senha tiver sido especificada). No Microsoft Windows, o arquivo é denominado% APPDATA% \ postgresql \ pgpass.conf (em que% APPDATA% se refere ao subdiretório Application Data no perfil do usuário).

    Este arquivo deve conter linhas do seguinte formato:

    hostname: port: database: nome de usuário: senha

    (Você pode adicionar um comentário de lembrete ao arquivo copiando a linha acima e precedendo-a com #.) Cada um dos quatro primeiros campos pode ser um valor literal, ou *, que corresponde a qualquer coisa. O campo de senha da primeira linha que corresponde aos parâmetros de conexão atuais será usado. (Portanto, coloque as inputs mais específicas primeiro quando estiver usando curingas.) Se uma input precisar conter: ou \, escape com este caractere. Um nome de host localhost corresponde às conexões do soquete de domínio Unix (pghost vazio ou o diretório de soquete padrão) do TCP (hosthost localhost) provenientes da máquina local. Em um servidor em espera, um nome de database de replicação corresponde às conexões de replicação de streaming feitas no servidor mestre. O campo do database é de utilidade limitada porque os usuários têm a mesma senha para todos os bancos de dados no mesmo cluster.

    Em sistemas Unix, as permissions no .pgpass devem proibir qualquer access ao mundo ou grupo; Consiga isso com o comando chmod 0600 ~ / .pgpass. Se as permissions forem menos rigorosas do que isso, o arquivo será ignorado. No Microsoft Windows, presume-se que o arquivo está armazenado em um diretório que é seguro, portanto, nenhuma verificação de permissions especiais é feita.