Esqueci-me da senha que introduzi durante a instalação do postgres.
ou esqueci ou mistifiquei (durante a instalação) a senha para o utilizador predefinido do Postgres. Parece que não consigo executá-lo e tenho o seguinte erro:
psql: FATAL: password authentication failed for user "hisham"
hisham-agil: hisham$ psql
Existe de qualquer forma para repor a senha ou como é que eu crio um novo utilizador com privilégios de super-utilizador?
Sou novo no Postgres e instalei-o pela primeira vez. Estou a tentar usá-lo com Carris e estou a gerir o Mac OS X Lion.9 answers
-
Encontre o ficheiro
pg_hba.conf
- ele pode estar localizado, por exemplo em/etc/postgresql-9.1/pg_hba.conf
.cd /etc/postgresql-9.1/
-
Para trás.
cp pg_hba.conf pg_hba.conf-backup
-
Colocar a seguinte linha (quer como a primeira linha não comentada, quer como a única):
local all all trust
-
Reinicie o seu servidor de PostgreSQL (por exemplo, no Linux:)
sudo /etc/init.d/postgresql restart
Se o serviço (Servidor) não começar a comunicar no ficheiro de Registo:
Local as ligações não são suportadas por esta compilação
Você deve mudar
local all all trust
A
host all all 127.0.0.1/32 trust
-
Agora pode ligar-se como qualquer utilizador. Ligar como superusuário
postgres
(Nota, o nome do superusuário pode ser diferente na sua instalação. Em alguns sistemas é chamadopgsql
, por exemplo.)psql -U postgres
Ou
psql -h 127.0.0.1 -U postgres
(note que com o primeiro comando não estará sempre ligado com máquina local)
-
Reiniciar a senha
ALTER USER my_user_name with password 'my_secure_password';
-
Restaurar o velho {[[0]} pois é muito perigoso {[80] } para manter em torno
cp pg_hba.conf-backup pg_hba.conf
-
Reinicie o servidor, a fim de correr com o cofre
pg_hba.conf
sudo /etc/init.d/postgresql restart
mais informações sobre o ficheiro pg_hba: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html
Ao ligar-se ao postgres a partir da linha de comandos, não se esqueça de adicionar -h localhost
como parâmetro da linha de comandos. Caso contrário, o postgres irá tentar ligar-se usando o modo de autenticação por pares.
O abaixo mostra uma reinicialização da senha, uma autenticação falhada com a autenticação por pares e uma autenticação bem sucedida com uma ligaçã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"
Trabalhar 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=#
A pg_hba.conf
(C:\Program Files\PostgreSQL\9.3\data
) o ficheiro foi alterado desde que estas respostas foram dadas. O que funcionou para mim, no Windows, é abrir o arquivo e mudar o METHOD
de md5
para 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, entrei sem senha e mudei a senha do utilizador postgres'
indo para File -> Change Password
Apenas uma nota, no Linux você pode simplesmente executar sudo su - postgres
para se tornar o usuário postgres e a partir daí mudar o que é necessário usando psql.
Se estiver no windows, pode correr
net user postgres postgres
E autenticar-se em postgres com postgres / postgres como utilizador/Senha
Para a instalação do Windows, é criado um utilizador do Windows. E "psql" use este Usuário para conexão com a porta. Se você alterar a senha do Usuário PostgreSQL, ela não mudará a do Windows. A linha de comando juste abaixo só funciona se você tiver acesso à linha de comando.
Em vez disso, poderá usar a aplicação GUI do Windows "c:\Windows\system32\lusrmgr.exe". Este aplicativo gerencia usuários criados pelo Windows. Então agora você pode modificar a senha.
-
Edite o ficheiro
/etc/postgresql/<version>/main/pg_hba.conf
e encontre a seguinte linha:local all postgres md5
Editar a linha e alterar
md5
no final paratrust
e gravar o ficheiro-
Recarregar o serviço pós-gresql
$ sudo service postgresql reload
-
Isto irá carregar os ficheiros de configuração. Agora você pode modificar o Usuário
postgres
entrando na linha de comandospsql
$ psql -U postgres
-
Actualizar a senha do utilizador
postgres
alter user postgres with password 'secure-passwd-here';
Editar o ficheiro
/etc/postgresql/<version>/main/pg_hba.conf
e mudartrust
de volta paramd5
e gravar o ficheiro-
Recarregar o serviço pós-gresql
$ sudo service postgresql reload
-
Verifique se a alteração da senha está a funcionar
$ psql -U postgres -W
Abra o pg_hba.ficheiro conf com o editor do gedit do terminal:
sudo gedit /etc/postgresql/9.5/main/pg_hba.conf
Ele vai pedir a senha. Indique a sua senha de autenticação administrativa. Isto irá abrir o gedit com o ficheiro. Colar a seguinte linha:
host all all 127.0.0.1/32 trust
Logo abaixo -
# Database administrative login by Unix domain socket
Guarda e fecha.
Feche o terminal e abra-o de novo e execute este comando:
psql -U postgres
Agora vai entrar na consola psql. Agora altere a senha ao introduzir isto:
ALTER USER [your prefered user name] with password '[desired password]';
Se diz que o utilizador não existe então em vez de ALTER
use CREATE
.
Por último, remova a linha que colou no pg_hba e guarde-a.
O ficheiro .o pgpass em um diretório doméstico do usuário ou o arquivo referenciado pelo PGPASSFILE pode conter senhas a serem usadas se a conexão requer uma senha (e nenhuma senha foi especificada de outra forma). No Microsoft Windows, o ficheiro chama-se %APPDATA%\postgresql\pgpass.conf (em que %APPDATA% refere-se à sub-pasta de dados da aplicação no perfil do utilizador).
Este ficheiro deve conter as seguintes linhas: formato:
Nome da máquina: Porto:base de dados: utilizador: Senha
(pode adicionar um comentário de chamada de atenção ao ficheiro, 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 entradas mais específicas primeiro quando você estiver usando wildcards.) Se um item necessitar de conter: ou\, escapar deste carácter com . Anfitriao o nome do localhost corresponde às ligações TCP (nome da máquina localhost) e Unix domain socket (pghost empty or the default socket directory) que vêm da máquina local. Num servidor de espera, um nome de base de dados de replicação corresponde a ligações de replicação em streaming feitas para o servidor mestre. O campo de banco de dados é de utilidade limitada porque os usuários têm a mesma senha para todas as bases de dados no mesmo conjunto.
Em sistemas Unix, as permissões estão ligadas .o pgpass deve proibir qualquer acesso a world or group; achieve this by the command chmod 0600 ~/.pgpass. Se as permissões são menos rígidas do que isso, o arquivo será ignorado. No Microsoft Windows, assume-se que o arquivo é armazenado em um diretório que é seguro, então nenhuma verificação de permissões especiais é feita.