Nie mogę się zalogować do phpPgAdmin

10

Próbuję skonfigurować phpPgAdmin na mojej maszynie testowej, aby móc współpracować z PostgreSQL bez konieczności korzystania z psqlCLI. Mam PostgreSQL 9.1 zainstalowany za pośrednictwem repozytorium RPM, a phpPgAdmin 5.0.4 „ręcznie” (poprzez wypakowanie archiwum ze strony phpPgAdmin). Dla przypomnienia, moim systemem operacyjnym jest CentOS 6.2.

Dokonałem już następujących zmian konfiguracji:

PostgreSQL

  • Wewnątrz pg_hba.conf, zmieniłem wszystkie METHODs do MD5.
  • Podałem hasło do konta postgres
  • Dodałem nowe konto o nazwie webuser z hasłem (pamiętaj, że nie zrobiłem nic więcej na koncie, więc nie mogę powiedzieć, że wiem, jakie ma uprawnienia i wszystko)

phpPgAdmin config.inc.php

  • Zmieniłem linię $conf['servers'][0]['host'] = '';na $conf['servers'][0]['host'] = '127.0.0.1';(próbowałem również użyć localhost jako wartości tam).
  • Ustaw $conf['extra_login_security']na false.

Ilekroć próbuję zalogować się do phpPgAdmin, pojawia się komunikat „Logowanie nie powiodło się”, nawet jeśli używam udanych poświadczeń (tych, które działają psql). Próbowałem wykonać niektóre kroki opisane w pytaniu 3 w FAQ , ale jak dotąd nie wyszło to dobrze. Prawdopodobnie nie pomaga to, że to mój pierwszy dzień pracy z PostgreSQL. Bardzo dobrze znam MySQL, ale muszę używać PostgreSQL do projektu, nad którym pracuję.

Czy ktoś może zaoferować pomoc dotyczącą konfiguracji phpPgAdmin na CentOS 6.2? Jeśli do tej pory zrobiłem coś strasznie złego w mojej konfiguracji, nie ma nic wielkiego, żeby coś zepsuć, bo to nie jest tak, że mam tam jeszcze jakieś dane!

Doceniam każdy wgląd, jaki możesz mieć!

Devin
źródło

Odpowiedzi:

7

Cóż, wymyśliłem to - było to połączenie braku doświadczenia z PostgreSQL i bardzo nieopisowych błędów phpPgAdmin.

Okazuje się, że nie miałem włączonego dostępu TCP / IP, co oznaczało, że żadna aplikacja PHP nie mogła uzyskać dostępu do bazy danych . Aby to naprawić, musiałem wprowadzić dwie zmiany:

  • Wydawało pracę lepiej, jeśli mogę ustawić listen_addresses, aby '*'w postgresql.conf. Nie jestem pewien, czy jest to całkowicie konieczne, czy nie, ale na dobrze zaporowej maszynie, takiej jak ta, nie powinno być problemu.
  • Musiałem uruchomić polecenie setsebool -P httpd_can_network_connect_db 1z okna terminala, aby Apache rzeczywiście mógł pobrać program i połączyć się. Nie pamiętam, czy musiałbym zrestartować PostgreSQL po tym kroku, ale prawdopodobnie nie zaszkodzi.

Ostatnia uwaga: Widziałem kilka rzeczy sugerujących zmianę linii tcpip_socket=truew postgresql.conf. To najwyraźniej nie działa w PostgreSQL 9.1. W rzeczywistości odmówił uruchomienia po dodaniu tego. Więc nie rób tego.

W każdym razie, mam nadzieję, że może to pomóc komuś, kto napotyka te same problemy, co ja!

Devin
źródło
W systemach z Security Enhanced Linux (SELinux) konieczne jest ustawienie httpd_can_network_connect_dbflagi za pomocą setsebool.
postrational
Aby wyjaśnić, niekoniecznie musisz mieć włączony dostęp TCP / IP, aby phpPgAdmin (lub inne skrypty PHP) łączyły się z Postgres, jeśli jesteś na tym samym serwerze, możesz jako alternatywne połączenie za pośrednictwem lokalnego gniazda unix. Prawdopodobnie nadal będziesz mieć problemy związane z SELinux.
xzilla
0

Nie mogłem skonfigurować phpPgAdmin, dopóki nie zobaczę twojego rozwiązania. Aby uzupełnić swoje rozwiązanie:

  • nie jest on przydatny do zestawu listen_address, aby '*'jeśli serwer phpPgAdmin jest na tym samym komputerze niż serwer postgresql (9.2, dla mnie), można ustawić go localhost.
  • jedyną użyteczną rzeczą jest ustawienie wartości logicznej SELinux.
użytkownik176931
źródło
0

Wypróbowałem powyższe rozwiązanie, ale nadal pojawia się komunikat „Logowanie nie powiodło się”. Aby rozwiązać, musiałem upewnić się, że IPv6 jest również ustawione passwordw pg_hba.confpliku. Więc zrób: vi /var/lib/pgsql/9.4/data/pg_hba.confi odpowiednio edytuj. Następnie uruchom ponownie zarówno httpd, jak i postgresql (niezależnie od używanej wersji)

Olu
źródło
0

Domyślnym użytkownikiem jest postgres i nie ma hasła do nowej instalacji. Więc w polu użytkownika włóż to i wyczyść pole hasła. Kliknij. gotowy.

Jeśli użyłeś pgAdmin4 i wprowadziłeś hasło przy pierwszym logowaniu, to jest hasło, którego używasz dla użytkownika postgres . Teraz w phppgadmin wpisz postgres jako nazwę użytkownika i hasło w polu hasła. Kliknij. Gotowy. Dziękuję Ci

NetBug
źródło
0

Uruchomiony na serwerze z GitLab-CE komunikat, który otrzymuję w pliku dziennika, brzmiał:

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"

więc łączę się psqlprzez cli i tworzę brakującą rolę / użytkownika (w moim przypadku gitlab-www):

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

A potem proces logowania otwiera drzwi.

fcm
źródło
Ogólnie rzecz biorąc, uwierzytelnianie równorzędne ograniczy danemu użytkownikowi dostęp do Postgres jedynie za pomocą wiersza poleceń (jak w psql) i zwykle nie będzie działać z phpPgAdmin. Utworzenie nowego użytkownika jest dobrym rozwiązaniem, ale możesz także zmienić metodę uwierzytelniania w pliku pg_hba.conf.
xzilla,