Impossibile accedere a phpPgAdmin


10

Sto cercando di configurare phpPgAdmin sulla mia macchina di prova in modo da poter interfacciarmi con PostgreSQL senza dover sempre usare la psqlCLI. Ho PostgreSQL 9.1 installato tramite il repository RPM, mentre ho installato phpPgAdmin 5.0.4 "manualmente" (estraendo l'archivio dal sito Web phpPgAdmin). Per la cronaca, il mio sistema operativo host è CentOS 6.2.

Ho già apportato le seguenti modifiche alla configurazione:

PostgreSQL

  • All'interno pg_hba.conf, ho cambiato tutte le METHODs in md5.
  • Ho dato una password all'account Postgres
  • Ho aggiunto un nuovo account chiamato webuser con una password (nota che non ho fatto nient'altro per l'account, quindi non posso dire esattamente che so quali autorizzazioni ha e tutto)

phpPgAdmin config.inc.php

  • Ho cambiato la linea $conf['servers'][0]['host'] = '';in $conf['servers'][0]['host'] = '127.0.0.1';(ho anche provato a usare localhost come valore lì).
  • Impostare $conf['extra_login_security']su false.

Ogni volta che provo ad accedere a phpPgAdmin, ottengo "Accesso fallito", anche se utilizzo credenziali di successo (quelle che funzionano psql). Ho provato ad eseguire alcuni dei passaggi indicati nella domanda 3 nelle FAQ , ma finora non ha funzionato bene. Probabilmente non aiuta che questo sia il mio primo giorno di lavoro con PostgreSQL. Conosco molto bene MySQL, ma devo usare PostgreSQL per il progetto a cui sto lavorando.

Qualcuno potrebbe offrire qualche aiuto su come impostare phpPgAdmin su CentOS 6.2? Se finora ho fatto qualcosa di terribilmente sbagliato nella mia configurazione, non è un grosso problema spazzare via qualcosa / tutto, poiché non è come se avessi ancora archiviato dei dati lì!

Apprezzo qualsiasi intuizione che potresti avere!

Risposte:


7

Bene, l'ho capito: era una combinazione di inesperienza con PostgreSQL e errori molto non descrittivi di phpPgAdmin.

Risulta che non avevo abilitato l'accesso TCP / IP, il che significava che nessuna applicazione PHP poteva accedere ai database . Per risolvere questo problema, ho dovuto apportare due modifiche:

  • Tutto sembrava funzionare meglio se ho impostato listen_addressesa '*'in postgresql.conf. Non sono sicuro che sia del tutto necessario o no, ma su una macchina ben protetta da firewall come questa, non dovrebbe essere un problema.
  • Ho dovuto eseguire il comando setsebool -P httpd_can_network_connect_db 1da una finestra del terminale per ottenere Apache per ottenere effettivamente con il programma e connettersi. Non ricordo se avrei dovuto riavviare PostgreSQL dopo questo passaggio, ma probabilmente non avrebbe fatto male.

Una nota finale: ho visto alcune cose che suggeriscono cambiare una linea tcpip_socket=truein postgresql.conf. Apparentemente questo non funziona in PostgreSQL 9.1. In effetti, si è rifiutato di iniziare dopo che l'ho aggiunto. Quindi non farlo.

Comunque, si spera che questo possa aiutare qualcuno che incontra gli stessi problemi che ho fatto!


Sui sistemi con Security Enhanced Linux (SELinux), è necessario impostare il httpd_can_network_connect_dbflag con setsebool.
postrazionale il

Solo per chiarire, non è necessario abilitare l'accesso TCP / IP per ottenere phpPgAdmin (o altri script PHP) per connettersi a Postgres se ci si trova sullo stesso server, in alternativa è possibile connettersi tramite un socket unix locale. Probabilmente avresti comunque incontrato problemi relativi a SELinux.
xzilla,

0

Non sono riuscito a configurare phpPgAdmin finché non vedo la tua soluzione. Per completare la tua soluzione:

  • non è utile impostare listen_addresssu '*'se il tuo server phpPgAdmin si trova sullo stesso computer del tuo server postgresql (9.2 per me), puoi impostarlo su localhost.
  • l'unica cosa utile è impostare il booleano SELinux.

0

Ho provato la soluzione sopra ma ho ancora ricevuto il messaggio "Login fallito". Per risolvere, ho dovuto assicurarmi che anche IPv6 sia impostato passwordnel pg_hba.conffile. Quindi: vi /var/lib/pgsql/9.4/data/pg_hba.confe modifica di conseguenza. Quindi riavvia sia httpd che postgresql (qualunque sia la versione che stai utilizzando)


0

Bene, l'utente predefinito è postgres e nessuna password di una nuova installazione. Quindi nella casella utente inserisci questo e deseleziona la casella della password. Clic. fatto.

Se hai usato pgAdmin4 e hai inserito una password al primo accesso che è la password che usi per l'utente postgres . Ora in phppgadmin digitare postgres come nome utente e quella password nella casella della password. Clic. Fatto. Grazie


0

In esecuzione su un server con GitLab-CE , il messaggio che ricevo sul file di registro 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"

quindi mi collego a psqlvia Cli e creo il ruolo / utente mancante (nel mio caso gitlab-www):

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

E poi, il processo di accesso apre le sue porte.


In generale, l'autenticazione peer limiterà l'utente dato ad essere in grado di accedere a Postgres solo tramite la riga di comando (come con psql) e di solito non funzionerà con phpPgAdmin. La creazione di un nuovo utente è un'ottima soluzione, ma è anche possibile modificare il metodo di autenticazione in pg_hba.conf.
Xzilla,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.