Não é possível fazer login no phpPgAdmin


10

Estou tentando configurar o phpPgAdmin na minha máquina de teste para que eu possa interagir com o PostgreSQL sem sempre precisar usar a psqlCLI. Eu tenho o PostgreSQL 9.1 instalado através do repositório RPM, enquanto eu instalei o phpPgAdmin 5.0.4 "manualmente" (extraindo o arquivo do site phpPgAdmin). Para o registro, meu sistema operacional host é o CentOS 6.2.

Já fiz as seguintes alterações na configuração:

PostgreSQL

  • Por dentro pg_hba.conf, mudei todos os METHODs para md5.
  • Eu dei uma senha à conta do postgres
  • Adicionei uma nova conta chamada webuser com uma senha (observe que não fiz mais nada na conta, por isso não posso dizer exatamente que sei quais permissões ela possui e todas)

phpPgAdmin config.inc.php

  • Alterou a linha $conf['servers'][0]['host'] = '';para $conf['servers'][0]['host'] = '127.0.0.1';(eu também tentei usar localhost como o valor lá).
  • Defina $conf['extra_login_security']como false.

Sempre que tento fazer login no phpPgAdmin, recebo "Falha no login", mesmo se eu usar credenciais bem-sucedidas (aquelas que funcionam psql). Eu tentei seguir algumas das etapas descritas na Pergunta 3 nas Perguntas frequentes , mas ainda não funcionou bem até agora. Provavelmente não ajuda que este seja meu primeiro dia de trabalho com o PostgreSQL. Estou familiarizado com o MySQL, mas preciso usar o PostgreSQL para o projeto em que estou trabalhando.

Alguém poderia oferecer alguma ajuda sobre como configurar o phpPgAdmin no CentOS 6.2? Se eu fiz algo terrivelmente errado em minha configuração até agora, não é grande coisa explodir algo / tudo, pois não é como se eu tivesse armazenado dados ainda!

Agradeço qualquer insight que você possa ter!

Respostas:


7

Bem, eu descobri - era uma combinação de inexperiência com o PostgreSQL e erros muito não descritivos do phpPgAdmin.

Acontece que eu não tinha o acesso TCP / IP ativado, o que significava que nenhum aplicativo PHP poderia acessar os bancos de dados . Para consertar isso, tive que fazer duas alterações:

  • Pareceu funcionar melhor se eu definir listen_addressesa '*'no postgresql.conf. Não tenho certeza se isso é totalmente necessário ou não, mas em uma máquina com firewall como este, não deve ser um problema.
  • Eu tive que executar o comando a setsebool -P httpd_can_network_connect_db 1partir de uma janela do terminal para que o Apache realmente se conectasse com o programa. Não me lembro se tive que reiniciar o PostgreSQL após esta etapa, mas provavelmente não faria mal.

Uma nota final: Eu vi algumas coisas que sugerem mudar uma linha tcpip_socket=trueno postgresql.conf. Aparentemente, isso não funciona no PostgreSQL 9.1. Na verdade, ele se recusou a começar depois que eu adicionei isso. Então não faça isso.

De qualquer forma, espero que isso ajude alguém que tenha os mesmos problemas que eu!


Em sistemas com Security Enhanced Linux (SELinux), é necessário definir o httpd_can_network_connect_dbsinalizador setsebool.
postrational

Só para esclarecer, você não precisa necessariamente de acesso TCP / IP habilitado para permitir que o phpPgAdmin (ou outros scripts PHP) se conecte ao Postgres se você estiver no mesmo servidor; como alternativa, conecte-se através de um soquete unix local. Você provavelmente ainda enfrentaria problemas relacionados ao SELinux.
Xzilla # 21/16

0

Não consegui configurar o phpPgAdmin até encontrar sua solução. Para concluir sua solução:

  • não é adequado para o conjunto listen_addresspara '*'se o seu servidor phpPgAdmin é no mesmo computador que o servidor PostgreSQL (9,2 por mim), você pode configurá-lo para localhost.
  • a única coisa útil é configurar o booleano do SELinux.

0

Tentei a solução acima, mas ainda recebi a mensagem 'Falha no login'. Para resolver, tive que garantir que o IPv6 também esteja definido passwordno pg_hba.confarquivo. Faça o mesmo: vi /var/lib/pgsql/9.4/data/pg_hba.confe edite de acordo. Em seguida, reinicie o httpd e o postgresql (qualquer que seja a versão que você está usando)


0

Bem, o usuário padrão é o postgres e nenhuma senha para uma nova instalação. Então, na caixa do usuário, coloque isso e limpe a caixa da senha. Clique. feito.

Se você usou o pgAdmin4 e inseriu uma senha no primeiro login, é a senha usada para o usuário postgres . Agora, no phppgadmin, digite postgres como nome de usuário e essa senha na caixa de senha. Clique. Feito. Obrigado


0

Executando em um servidor com GitLab-CE , a mensagem que recebo no arquivo de log era:

tail -f -n 8 /var/log/postgresql/postgresql-*-main.log
......
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 LOG:  provided user name (postgres) and authenticated user name (gitlab-www) do not match
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 FATAL:  Peer authentication failed for user "postgres"
2019-07-24 16:33:15.073 EDT [9640] postgres@template1 DETAIL:  Connection matched pg_hba.conf line 85: "local   all             postgres                                peer"

então, eu conecto psqlvia via cli e crio a função / usuário ausente (no meu caso gitlab-www):

# sudo -u postgres psql
CREATE USER "gitlab-www" WITH PASSWORD 'YouKnow..' CREATEDB CREATEROLE SUPERUSER LOGIN;

E então, o processo de login abre suas portas.


Em geral, a autenticação por pares limitará o usuário especificado a apenas acessar o Postgres através da linha de comando (como no psql), e geralmente não funcionará com o phpPgAdmin. Criar um novo usuário é uma boa solução, mas você também pode alterar o método de autenticação no pg_hba.conf.
Xzilla 6/08/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.